簡體   English   中英

將具有 UTC 時區偏移量的日期轉換為相應的本地時區格式

[英]Convert a date with UTC timezone offset to corresponding local timezone format

我有一個字符串日期,它已經包含適當的時區偏移 -08:00,我可以將其轉換為日期時間變量,但使用 UTC 時區格式

from datetime import datetime
from pytz import timezone
import pytz

str_date = '2020-01-01T00:00:00-08:00'#
specific_date_format = "%Y-%m-%d %H:%M:%S %Z"

my_date = datetime.fromisoformat(str_date)
print(my_date.strftime(specific_date_format))

_____________________________________________
Output
>> 2020-01-01 00:00:00 UTC-08:00

我需要的格式是

2020-01-01 00:00:00 PST

不確定如何將 UTC-08:00 轉換為 PST。

嘗試使用 pytz 並看到用預定義的“America/Los_Angeles”替換時區的建議,但我需要代碼來檢測小時偏移 UTC-08:00 對應於“America/Los_Angeles”時區並將其轉換為這樣。

由於您的輸入已經包含 UTC 偏移量,您可以解析 iso 格式字符串以了解日期時間(tzinfo 集)並使用astimezone設置正確的時區。 使用 pytz:

from datetime import datetime
from pytz import timezone # Python 3.9: zoneinfo (standard lib)

str_date = '2020-01-01T00:00:00-08:00'

# to datetime
dt = datetime.fromisoformat(str_date)

# to tz
dt_tz = dt.astimezone(timezone("America/Los_Angeles"))

print(dt_tz)
# 2020-01-01 00:00:00-08:00
print(repr(dt_tz))
# datetime.datetime(2020, 1, 1, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
print(dt_tz.strftime("%a, %d %b %Y %H:%M:%S %Z"))
# Wed, 01 Jan 2020 00:00:00 PST

另請參閱:顯示不同時區的時間- 例如 Python 3.9/zoneinfo 示例的此答案

暫無
暫無

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

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