Python中datetime的常用操作

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

一、naive類型和aware類型的相互轉換。

即不帶時區(naive)的時間日期類型和帶時區(naive)的時間日期類型間的相互轉換

1.不帶時區的轉化為帶時區的:

>>> 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.帶時區的類型轉化為不帶時區的類型:

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

3.帶時區之間的相互轉化:

>>> 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)的不同:前者生成的新對象和原對象還表示同一個時間點,只不過時間數值大小都轉化為新時區的了。后者僅改變時區屬性,時間數值大小都不必變,因此很可能表示的不是同一個時間點了,除非新老時區相同。

>>> 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對象之間的相互轉化

1.timestamp轉化為datetime

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

2.datetime轉化為timestamp

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

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

三、datetime和str之間的轉化

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模塊的使用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容