使用pytz时出现奇怪的时区问题
使用pytz时出现奇怪的时区问题
>>> import pytz >>> pytz.timezone('Asia/Hong_Kong') <DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>
7小时37分钟的偏移?这有点奇怪,有人遇到相同的问题吗?
实际上我发现在两种不同情况下有不同的行为:
import pytz from datetime import datetime hk = pytz.timezone('Asia/Hong_Kong') dt1 = datetime(2012,1,1,tzinfo=hk) dt2 = hk.localize(datetime(2012,1,1)) if dt1 > dt2: print "Why?"
admin 更改状态以发布 2023年5月23日
虽然我确信时区历史变化是一个因素,但是即使对于自始至终没有发生任何变化的时区,将pytz时区对象传递给DateTime构造函数也会导致奇怪的行为。
import datetime import pytz dt = datetime.datetime(2020, 7, 15, 0, 0, tzinfo= pytz.timezone('US/Eastern'))
该操作会产生
2020-07-15 00:00:00-04:56
创建datetime对象,然后将其本地化可以产生预期的结果
import datetime import pytz dt = datetime.datetime(2020, 7, 15, 0, 0) dt_local = timezone('US/Eastern').localize(dt)
该操作会产生
2020-07-15 00:00:00-04:00