圖解python | 時間和日期處理
作者:韓信子@ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/56
本文地址:http://www.showmeai.tech/article-detail/90
宣告:版權所有,轉載請聯絡平臺與作者並註明出處
Python日期與時間
在Python的開發過程中,我們經常要處理時間型別的資料,Python內建了 time
, datetime
等標準庫,幫助我們對時間型進行處理,在本節內容中,我們將圍繞這兩個標準庫,詳細展開介紹常用方法。
1.time模組
在Python中,time
模組主要用於將時間戳轉換為具體的日期時間,但time
模組表示日期時間的物件結構簡單,不適合進行復雜的操作和表示。
(1)模組用法
time
模組中只有time.struct_time
一個類:
struct_time
是一個轉換秒數得到的結構化的時間物件,可以通過下標或屬性名稱獲取物件的年月日時分秒等屬性。呼叫 gmtime()
,localtime()
,strptime()
等方法可得到 struct_time
例項。
>>> st = time.localtime() >>> st time.struct_time(tm_year=2021, tm_mon=10, tm_mday=27, tm_hour=19, tm_min=27, tm_sec=31, tm_wday=2, tm_yday=300, tm_isdst=0) >>> st.tm_mon 10 >>> st[1] 10
# 在struct_time和字串之間進行轉換
>>> time.strftime('%H:%M:%S')
'19:10:37'
>>> time.strptime("30 Nov 00", "%d %b %y")
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0,
tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
import time # 格式化成2021-10-27 19:56:36形式 print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 格式化成Sat Mar 28 22:24:24 2016形式 print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())) # 將格式字串轉換為時間戳 a = "Wed Oct 27 19:56:36 2021" print(time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
2.datetime模組
datetime
模組支援日期和時間的運算,它提供了一些用於操作日期和時間的類。該模組的絕大部分功能都圍繞著以下 4 個類(以及另外兩個關於時區的類)的方法和屬性來實現。
(1)date
類及用法
date
類表示日期型別。
支援的操作符:
- 支援與另一
date
物件進行==
,≤
,<
,≥
,>
等比較操作。 - 支援與
timedelta
物件進行加減操作,結果依然為date
物件。 - 支援與另一
date
物件進行相減操作,得到timedelta
物件。 - 支援雜湊。
程式碼示例:
# 傳入日期對應的年月日引數,例項化date類
>>> from datetime import date
>>> date(2021, 10, 29)
datetime.date(2021, 10, 29)
# 可以通過時間戳獲得時間
>>> date.fromtimestamp(time.time())
datetime.date(2021, 10, 29)
>>> d2 = date(2021, 10, 29)
>>> d1 = date(2021, 10, 27)
>>> d2 > d1
True
>>> d2 - d1
datetime.timedelta(days=2)
(2)time
類及用法
time
類表示時間(時分秒)型別。
支援的操作符
- 支援與另一
time
物件進行==
,≤
,<
,≥
,>
等比較操作。 - 支援雜湊。
程式碼示例
>>> from datetime import time
>>> t = time.fromisoformat('19:32:10')
>>> t.strftime('%Hh %Mm %Ss')
'19h 32m 10s'
>>> t = time(hour=19, minute=27, second=55)
>>> t.isoformat()
'19:27:55'
(3)datetime
類及用法
datetime
類表示包含日期時分的時間型別,可以視作 date
和 time
例項的組合體,因此同時具備了兩種物件的大部分方法和屬性。
支援的操作符
datetime
支援與date
進行相等比較,但結果一定為False
,除此之外只支援與另一datetime
物件執行==
,≤
,<
,≥
,>
等比較操作。- 支援與
timedelta
相加,結果為datetime
;支援與timedelta
物件進行加減,結果依然為datetime
物件,與另一datetime
物件進行相減,得到timedelta
物件。 - 同樣支援雜湊。
程式碼示例
>>> from datetime import datetime
>>> datetime(year=2021, month=10, day=29)
datetime.datetime(2021, 10, 29, 0, 0)
>>> datetime.now()
datetime.datetime(2021, 10, 29, 14, 51, 18, 731235)
>>> datetime.fromisoformat('2021-10-29 16:09:32')
datetime.datetime(2021, 10, 29, 16, 9, 32)
>>> dt = datetime.now()
>>> dt.timestamp()
1635317544.682565
>>> dt.date()
datetime.date(2021, 10, 29)
(4)timedelta
timedelta
類物件表示兩個 datetime
物件之間的差異。
支援的操作符
-
只支援與另一
timedelta
進行比較,進行==
,≤
,<
,≥
,>
等比較操作。 -
timedelta
物件支援支援加減操作,datetime
與timedelta
相加或相減仍然返回datetime
。 -
timedelta
還支援乘除模除等操作符。 -
支援雜湊。
-
timedelta
是有符號的,支援abs()
函式,可返回兩個datetime
之間的絕對間隔。
程式碼示例
>>> from datetime import timedelta
>>> timedelta(days=2)
datetime.timedelta(days=2)
>>> dt1 = datetime.now()
>>> dt2 = datetime.now()
>>> dt2 -dt1
datetime.timedelta(seconds=4, microseconds=476390)
>>> d = timedelta(minutes=3, seconds=35)
>>> d.total_seconds()
215.0
資料與程式碼下載
本教程系列的程式碼可以在ShowMeAI對應的github中下載,可本地python環境執行,可以訪問google的寶寶也可以直接藉助google colab一鍵執行與互動操作學習哦!
本教程系列涉及的Python速查表可以在以下地址下載獲取:
拓展參考資料
ShowMeAI相關文章推薦
- python介紹
- python安裝與環境配置
- python基礎語法
- python基礎資料型別
- python運算子
- python條件控制與if語句
- python迴圈語句
- python while迴圈
- python for迴圈
- python break語句
- python continue語句
- python pass語句
- python字串及操作
- python列表
- python元組
- python字典
- python集合
- python函式
- python迭代器與生成器
- python資料結構
- python模組
- python檔案讀寫
- python檔案與目錄操作
- python錯誤與異常處理
- python面向物件程式設計
- python名稱空間與作用域
- python時間和日期