私はdatetimeintUTCを次のように保存します。
_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です)。ここで何が欠けていますか?
日付文字列を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
はconvert datetimesではなく、日付文字列をそのタイムゾーンで記述されているかのように解釈します。 localize
は、単純な日時(timeUTC
など)からタイムゾーン対応の日時を作成します。 astimezone
は、タイムゾーン対応の日時を他のタイムゾーンに変換します。