[Python 3] 產生 ISO 8601 含時區格式的現在時間(不透過 pytz)

Business Time Clocks

真的很崩潰,對 Python 不熟做個筆記 QQ

我想在 AWS Lambda 產生現在時間的字串,條件如下:

  • ISO 格式(ISO 8601)
  • 指定時區(例如台灣的 GMT+8Asia/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 授權條款
本著作由小克製作,以創用CC 姓名標示-相同方式分享 4.0 國際 授權條款釋出。