我将我的datetime存储在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)。我在这里缺少什么?
答案 0 :(得分:23)
将日期字符串本地化为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
将时区感知日期时间转换为其他时区。