簡體   English   中英

當地時間到 UTC

[英]Local time to UTC

'v' 是從數據庫讀取的 python 日期時間 object - '2020-09-24 00:00:00'

我想存儲在祖魯語的 LDAP 中——所以“2020-09-24 07:00:00”——因為我位於洛杉磯。

v = v.strftime('%Y%m%d%H%M%SZ') - 直接轉換為 20200924000000Z(不是 20200924070000Z)。

這是正確的行為嗎? 如果沒有,在注入 LDAP 之前,我如何最好地隱蔽時間讀取 UTC?

'v' 是從數據庫讀取的 python datetime 對象 - '2020-09-24 00:00:00'

我想存儲在祖魯語的 LDAP 上面 - 所以'2020-09-24 07:00:00' - 因為我位於洛杉磯。

v = v.strftime('%Y%m%d%H%M%SZ') - 直接轉換為 20200924000000Z(不是 20200924070000Z)。

這是正確的行為嗎? 如果沒有,在注入 LDAP 之前,如何最好地將時間讀取到 UT​​C?

  • 將字符串解析為日期時間 object(這將是幼稚的;不知道時區)——您的格式允許使用fromisoformat ,這比strptime有效
  • 設置適當的時區(這里:洛杉磯的美國/太平洋)
  • 將時區更改為 UTC
  • output 作為所需格式的字符串

由於 pytz 將隨着 Python 3.9 的發布而被棄用,我建議使用dateutil 使用Python 3.9,您將擁有用於此類操作的區域信息。

from datetime import datetime
from dateutil.tz import gettz

s = '2020-09-24 00:00:00'
dt = datetime.fromisoformat(s)

# set time zone
dt = dt.replace(tzinfo=gettz('US/Pacific'))

# to UTC
dt = dt.astimezone(gettz('UTC'))

# to string
out = dt.strftime('%Y%m%d%H%M%SZ')
# '20200924070000Z'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM