[Python 3] 產生 ISO 8601 含時區格式的現在時間(不透過 pytz)
真的很崩潰,對 Python 不熟做個筆記 QQ
我想在 AWS Lambda 產生現在時間的字串,條件如下:
- ISO 格式(ISO 8601)
- 指定時區(例如台灣的
GMT+8
或Asia/Taipei
) - 不要另外裝 Library
預期字串如下:
'2020-04-27T18:18:30.810511+08:00'
真的是出乎意料,如此簡單的需求,幾乎所有查到的資料都叫我裝 pytz
🤦♂️
解決方案
花了我半個小時查資料加不停的嘗試,才找到原生可以支援的寫法:
from datetime import datetime, timezone, timedelta
# 設定為 +8 時區
tz = timezone(timedelta(hours=+8))
# 取得現在時間、指定時區、轉為 ISO 格式
datetime.now(tz).isoformat()
如果進一步想把微秒拿掉,可以參考 Python 文件的 isoformat()
段落,調整為:
datetime.now(tz).isoformat(timespec="seconds")
心得
大家(包含我也是 😅)實在是太依賴套件了啊!
本著作由小克製作,以創用CC 姓名標示-相同方式分享 4.0 國際 授權條款釋出。