看了一篇博文介紹的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()