美文网首页
2018-06-27

2018-06-27

作者: AzxWy | 来源:发表于2018-06-27 13:44 被阅读0次

python利用pytz创建datetime

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

pytz.timezone('America/New_York')
# output <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>

当使用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=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)
dt.astimezone(pytz.utc)
# output datetime.datetime(2018, 6, 27, 14, 56, tzinfo=<UTC>)

而使用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=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)

tz.localize(datetime(1901, 7, 10, 12, 0))
# output datetime.datetime(1901, 7, 10, 12, 0, tzinfo=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)

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

相关文章

网友评论

      本文标题:2018-06-27

      本文链接:https://www.haomeiwen.com/subject/uipbyftx.html