Python之datetime總結

看了一篇博文介紹的Python的內建模塊datetime,恩,確實被繞暈了,寫篇博客總結一下,理理思緒。


1.datetime是Python處理時間的一個標準庫,在計算機中存儲的時間通常是由timestamp表示的,所以,如果想要存儲某個時間,需要把要存儲的時間類型轉換爲timestamp

舉個栗子如下:加入把當前時間轉換爲timestamp類型

from datetime import datetime
datetime.now().timestamp()

2.通過datetime.strptime()將str轉爲datetime

from datetime import datetime
cday = datetime.strptime('2016-6-17 16:19:59', '%Y-%m-%d %H:%M:%S')

3.本地時間轉爲UTC時間


>>> from datetime import datetime, timedelta, timezone
>>> tz_utc_8 = timezone(timedelta(hours=8)) # 創建時區UTC+8:00
>>> now = datetime.now()
>>> now
datetime.datetime(2016, 6, 17, 16, 2, 10, 871012)
>>> dt = now.replace(tzinfo=tz_utc_8) # 強制設置爲UTC+8:00
>>> dt
datetime.datetime(2016, 6, 17, 16, 2, 10, 871012, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))

通過timezone將時區強制轉爲utc+8:00


4.通過astimezone實現時區的轉換

# 拿到UTC時間,並強制設置時區爲UTC+0:00:
>>> utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
>>> print(utc_dt)
2016-06-17 16:13:12.377316+00:00
# astimezone()將轉換時區爲北京時間:
>>> bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
>>> print(bj_dt)
2016-06-17 16:13:12.377316+08:00

最後借用一道題目來總結下上面的知識點:

假設你獲取了用戶輸入的日期和時間如2015-1-21 9:01:30,以及一個時區信息如UTC+5:00,均是str,請編寫一個函數將其轉換爲timestamp:

from datetime import datetime, timezone, timedelta

def timestamp(tr_time, tr_utc):
    #首先將用戶輸入的時間轉爲datetime
    td_time = datetime.stamp(tr_time,'%Y-%m-%d %H:%M:%S')

    #然後通過正則取得時區
    td_utc=re.match(r'^UTC([+|-]\d{1,2}):00$',tr_utc).group(1)
    td=timezone(timedelta(hours=int(td_utc)))

    #將datetime類型的時間轉爲UTC時間

    dt=td_time.replace(tzinfo=td)
    return dt.timestamp()
發佈了30 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章