2018年1月10日 星期三

Python 的時間處理

字串轉時間

假設字串是「Wed, 10 Jan 2018 08:09:13 +0000」,可以使用這樣的 Pattern 來解析:

from datetime import datetime

time_text = 'Wed, 10 Jan 2018 08:09:13 +0000'
datetime.strptime(time_text, '%a, %d %b %Y %H:%M:%S %z')

其中 Pattern 的寫法可以參考官方的文件 [1]。

取得帶有時區資訊的現在時間
需要特別這麼做的原因,是因為如果是直接使用 datetime.now() 的話,得到的時間是沒有時區的
這在需要做時間比較時有可能會有問題,尤其在要比較的時間本身就有時區資訊的話,Python 會回傳錯誤訊息。

from datetime import datetime, timezone

datetime.now(timezone.utc)
計算時間
取得三小時前的時間

from datetime import datetime, timedelta, timezone

datetime.now(timezone.utc) - timedelta(hours=3)
參考資料
  1. strptime
  2. Python get current time in right timezone [duplicate]

沒有留言: