16

我像这样存储我的 datetime int UTC:

import pytz, datetime

timeUTC = datetime.datetime(2013, 5, 23, 19, 27, 50, 0)
timezoneLocal = pytz.timezone('Europe/Vilnius')

timeLocal = timezoneLocal.localize(timeUTC)

但是当我尝试打印它时,它只会给我正常的 UTC 时间

>>> timeLocal.strftime('%H:%M:%S')
'19:27:50'

我希望这会返回'22:27:50',因为这是当地时间(pytz.timezone('Europe/Vilnius')目前是 +3)。我在这里想念什么?

4

1 回答 1

25

将日期字符串本地化为 UTC 日期时间,然后用于astimezone将其转换为本地时区。

import pytz, datetime

timeUTC = datetime.datetime(2013, 5, 23, 19, 27, 50, 0)
timezoneLocal = pytz.timezone('Europe/Vilnius')
utc = pytz.utc
timeLocal = utc.localize(timeUTC).astimezone(timezoneLocal)
print(timeLocal)
# 2013-05-23 22:27:50+03:00

localize转换日期时间,它将日期字符串解释为好像它是在该时区写入的。localize从一个简单的日期时间(例如timeUTC)构建一个时区感知的日期时间。astimezone将时区感知日期时间转换为其他时区。

于 2013-05-23T19:41:45.157 回答