在python中转换时区的意外结果

jxstanford:

我试图了解将时区转换为UTC时为什么得到这些结果的原因:

In [74]: d1 = datetime(2007, 12, 5, 6, 30,tzinfo=pytz.timezone('US/Pacific'))
In [75]: d1
Out[75]: datetime.datetime(2007, 12, 5, 6, 30, tzinfo=<DstTzInfo 'US/Pacific' LMT-1 day, **16:07:00 STD**>)
In [76]: d1.astimezone(pytz.utc)
Out[76]: datetime.datetime(2007, 12, 5, 14, 23, tzinfo=<UTC>)

为什么早上6:30变成下午2:23?

另一方面,如果我使用以下方法,则会得到预期的结果:

In [90]: d2 = datetime(2007, 12, 5, 6, 30)
In [91]: uspac = pytz.timezone('US/Pacific')
In [92]: d2_aware = uspac.localize(d2)
In [94]: d2_aware.astimezone(pytz.utc)
Out[94]: datetime.datetime(2007, 12, 5, 14, 30, tzinfo=<UTC>)
用户3834473:

从部分文档中:http : //pytz.sourceforge.net/#localized-times-and-date-arithmetic

不幸的是,在许多时区中,使用标准datetime构造函数的tzinfo参数对pytz都不起作用。[...]对于没有夏令时转换的时区,例如UTC,这是安全的。[...]处理时间的首选方法是始终使用UTC进行工作,仅在生成人类可读的输出时才转换为本地时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章