2018-06-27

python利用pytz创建datetime

由于时区offset多年来有所改变,当利用pytz构建timezone时区域名称和偏移量默认为最早使用时的值

pytz.timezone('America/New_York')
# output 

当使用replac方法赋给datetime时区信息时,会使用默认偏移量和区域名称,因此产生分钟数

# dt = datetime.datetime(2018, 6, 27, 10, 0)
dt.replace(tzinfo=pytz.timezone('America/New_York'))
# output datetime.datetime(2018, 6, 27, 10, 0, tzinfo=)
dt.astimezone(pytz.utc)
# output datetime.datetime(2018, 6, 27, 14, 56, tzinfo=)

而使用pytz.locallize会根据datetime的日期赋予适当的偏移量与时区名称

tz = pytz.timezone('America/New_York')
tz.localize(datetime(2018, 6, 27, 14, 56))
# output datetime.datetime(2018, 6, 27, 14, 56, tzinfo=)

tz.localize(datetime(1901, 7, 10, 12, 0))
# output datetime.datetime(1901, 7, 10, 12, 0, tzinfo=)

因此在构建带时区的datetime的时候应该使用locallize方法

你可能感兴趣的:(2018-06-27)