如何调整时区的"strftime"?

Mor*_*lde 15 python datetime python-2.7

我将我的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)
Run Code Online (Sandbox Code Playgroud)

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

>>> timeLocal.strftime('%H:%M:%S')
'19:27:50'
Run Code Online (Sandbox Code Playgroud)

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

unu*_*tbu 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
Run Code Online (Sandbox Code Playgroud)

localize转换日期时间,它将日期字符串解释为在该时区中写入.localize从天真的日期时间(例如timeUTC)中构建一个时区感知的日期时间.astimezone将时区感知日期时间转换为其他时区.

  • 这就像一个魅力(虽然我不确定它是否那么直观......),谢谢! (2认同)