Python的datetime包提供了日期和時間處理的類和函數,它的功能非常強大。下面從不同角度詳細闡述datetime的使用方法。
一、基本的日期、時間和時間戳
在Python中,datetime類用於表示一個日期和時間組合。可以通過datetime.datetime.now()獲取當前日期和時間,代碼示例:
>>> import datetime
>>> dt = datetime.datetime.now()
>>> print(dt)
2022-04-23 18:54:52.396514
此時dt的類型為datetime.datetime。另外,也可以使用datetime.date和datetime.time分別表示日期和時間,代碼示例:
>>> d = datetime.date(2022, 4, 23)
>>> print(d)
2022-04-23
>>> t = datetime.time(18, 56, 38)
>>> print(t)
18:56:38
除此之外,還可以使用時間戳來表示日期和時間,可以通過datetime.datetime.fromtimestamp()將時間戳轉化為datetime對象,代碼示例:
>>> timestamp = 1648146252.395705
>>> dt = datetime.datetime.fromtimestamp(timestamp)
>>> print(dt)
2022-04-23 18:50:52.395705
二、日期和時間的加減
datetime對象支持日期和時間的加減操作,例如可以使用timedelta來增減日期和時間,代碼示例:
>>> dt = datetime.datetime.now()
>>> delta = datetime.timedelta(days=1)
>>> new_dt = dt + delta
>>> print(new_dt)
2022-04-24 18:54:52.396514
>>> delta = datetime.timedelta(hours=1)
>>> new_dt = dt + delta
>>> print(new_dt)
2022-04-23 19:54:52.396514
以上代碼分別增加了一天和一小時。同理,通過減去一個timedelta對象可以實現時間的減少。
三、日期和時間的格式化輸出
datetime對象支持將日期和時間按照指定格式輸出,可以使用strftime函數,其格式化方式與C語言中的strftime函數一樣,代碼示例:
>>> dt = datetime.datetime.now()
>>> print(dt.strftime("%Y-%m-%d %H:%M:%S"))
2022-04-23 18:54:52
>>> print(dt.strftime("%Y年%m月%d日 %H時%M分%S秒"))
2022年04月23日 18時54分52秒
以上代碼分別將日期和時間按照指定的格式輸出。
四、時區和夏令時的處理
在實際應用中,通常需要將一個時區的時間轉化為另一個時區的時間,或者考慮夏令時的影響,datetime包提供了相應的功能。可以使用pytz模塊來進行時區和夏令時的處理。
首先需要安裝pytz模塊:
pip install pytz
然後可以通過pytz.timezone獲取一個時區對象,代碼示例:
>>> import pytz
>>> tz = pytz.timezone('Asia/Shanghai')
>>> dt = datetime.datetime.now()
>>> print(dt.astimezone(tz))
2022-04-23 18:54:52.396514+08:00
以上代碼將當前時間轉化為Asia/Shanghai時區的時間。同理,可以將一個指定時區的時間轉化為另一個時區的時間。
需要注意的是,夏令時的時間處理需要使用pytz模塊中的is_dst參數。is_dst表示是否考慮夏令時的影響,代碼示例:
>>> tz = pytz.timezone('US/Eastern')
>>> dt = datetime.datetime(2022, 3, 13, 2, 30, tzinfo=tz)
>>> print(dt)
2022-03-13 02:30:00-05:00
>>> new_dt = dt + datetime.timedelta(hours=1)
>>> print(new_dt)
2022-03-13 03:30:00-04:00
>>> dt = datetime.datetime(2022, 11, 6, 1, 30, tzinfo=tz)
>>> print(dt)
2022-11-06 01:30:00-04:00
>>> new_dt = dt + datetime.timedelta(hours=1)
>>> print(new_dt)
2022-11-06 01:30:00-05:00
以上代碼分別是US/Eastern時區的夏令時開始和結束時間處理。
五、UTC時間的處理
UTC是世界標準時間,Python的datetime包也提供了UTC時間的處理函數。可以使用datetime.datetime.utcnow()獲取當前的UTC時間,代碼示例:
>>> dt = datetime.datetime.utcnow()
>>> print(dt)
2022-04-23 11:54:52.396514
需要注意的是,UTC時間和時區有所不同,在進行時間計算時需要考慮到時區的影響。
原創文章,作者:VCPDV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334631.html