簡體   English   中英

如何將 python 中的 UTC 時間轉換為本地時間?

[英]How can I convert from UTC time to local time in python?

那么,我想將 UTC 日期時間2021-08-05 10:03:24.585Z轉換為印度日期時間如何轉換呢?

我試過的是

from datetime import datetime

from pytz import timezone

st = "2021-08-05 10:03:24.585Z"

datetime_object = datetime.strptime(st, '%Y-%m-%d %H:%M:%S.%fZ')

local_tz = timezone('Asia/Kolkata')
start_date = local_tz.localize(datetime_object)
print(start_date.replace(tzinfo=local_tz))

但是 output 仍然不在我提到的時區,我如何轉換時間並從時間打印時間。

Output:

2021-08-05 10:03:24.585000+05:21

你可以這樣使用:

from datetime import datetime
from dateutil import tz

from_zone = tz.gettz('UTC')
to_zone = tz.gettz('Asia/Kolkata')

utc = datetime.strptime('2011-01-21 02:37:21', '%Y-%m-%d %H:%M:%S')

utc = utc.replace(tzinfo=from_zone)

central = utc.astimezone(to_zone)

將日期/時間字符串正確解析為 UTC 日期時間,並使用astimezone而不是replace轉換為特定時區(注釋中為較新的 Python 版本(3.9+)提供的選項):

from datetime import datetime
# from zoneinfo import ZoneInfo
from dateutil.tz import gettz

st = "2021-08-05 10:03:24.585Z"
zone = "Asia/Kolkata"

# dtUTC = datetime.fromisoformat(st.replace('Z', '+00:00'))
dtUTC = datetime.strptime(st, '%Y-%m-%d %H:%M:%S.%f%z')

# dtZone = dtUTC.astimezone(ZoneInfo(zone))
dtZone = dtUTC.astimezone(gettz(zone))

print(dtZone.isoformat(timespec='seconds'))
# 2021-08-05T15:33:24+05:30

如果您只需要本地時間,即您機器的設置,您也可以使用astimezone(None)

在 Python 3.10.8

from datetime import datetime
st = "2021-08-05 10:03:24.585Z"
dtUTC = datetime.fromisoformat(st[:-1]+'+00:00')
dtUTC = dtUTC.astimezone()
print(dtUTC.isoformat(timespec='seconds'))
# 2021-08-05T15:33:24+05:30

暫無
暫無

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

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