Python中datetime的常用操作

總結(jié)幾個我們在程序中常用到的關于datetime的操作,以供參考。

一、naive類型和aware類型的相互轉(zhuǎn)換。

即不帶時區(qū)(naive)的時間日期類型和帶時區(qū)(naive)的時間日期類型間的相互轉(zhuǎn)換

1.不帶時區(qū)的轉(zhuǎn)化為帶時區(qū)的:

>>> from datetime import datetime
>>> import pytz
>>> china_tz = pytz.timezone('Asia/Shanghai')
>>> local_naive = datetime.now()
>>> local_aware = now_naive.replace(tzinfo=china_tz)
>>> local_aware
datetime.datetime(2016, 12, 18, 8, 0, 0, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8>

2.帶時區(qū)的類型轉(zhuǎn)化為不帶時區(qū)的類型:

>>> local_naive = now_aware.replace(tzinfo=None)
>>> local_naive
datetime.datetime(2016, 12, 18, 8, 0, 0)

3.帶時區(qū)之間的相互轉(zhuǎn)化:

>>> utc_tz = pytz.utc
>>> utc_aware = local_aware.astimezone(utc_tz)
>>> utc_aware
datetime.datetime(2016, 12, 18, 0, 0, <UTC>)

這里要注意datetime.astimezone(tz)和datetime.repalce(tzinfo=tz)的不同:前者生成的新對象和原對象還表示同一個時間點,只不過時間數(shù)值大小都轉(zhuǎn)化為新時區(qū)的了。后者僅改變時區(qū)屬性,時間數(shù)值大小都不必變,因此很可能表示的不是同一個時間點了,除非新老時區(qū)相同。

>>> utc_aware - local_aware
datetime.datetime(0)
>>> another_aware = local_aware.replace(tzinfo=utc_tz)
>>> another_aware - local_aware
datetime.timedelta(0, 29160)

二、timestamp和datetime對象之間的相互轉(zhuǎn)化

1.timestamp轉(zhuǎn)化為datetime

>>> import time
>>> stamp = time.time()
>>> local_time = datetime.fromtimestamp(stamp) # 還可傳入一個可選參數(shù)tz
>>> local_time
datetime.datetime(2016, 12, 18, 10, 57, 1, 326000)

2.datetime轉(zhuǎn)化為timestamp

>>> import time
>>> struct_time = local_time.timetuple()  # 先轉(zhuǎn)化為一個time.stuct_time對象
>>> new_stamp = time.mktime(struct_time)  # 再轉(zhuǎn)化為timestamp
>>> new_stamp == stamp
False
>>> new_stamp
1482031898.0
>>> stamp
1482031898.039      # 可以看出轉(zhuǎn)化過來后有秒以下的精度損失。

如果你知道絕對精確轉(zhuǎn)換的方法, 請告訴我:)

三、datetime和str之間的轉(zhuǎn)化

1.datetime生成成易于閱讀的字符串(str)

>>> local_time.strftime('%Y-%m-%d')  # convert datetime to formate str
2016-12-18

2.從字符串(str)生成datime對象

>>> date_str = '2016-12-18'
>>> new_datetime = datetime.strptime(date_str, '%Y-%m-%d')  # string parsed to datime according to format
>>> new_datetime
datetime.datetime(2016, 12, 18, 0, 0)

更多格式可參考下表:python時間字符串格式表
關于datetime模塊的更多知識可參考我的另外一篇文章Python中的datetime模塊的使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容