您无法在datetime
构造函数中分配时区,因为它不会给时区对象提供调整夏令时的机会- 日期无法访问。这对于世界的某些地区甚至造成了更多的问题,这些地区的时区名称和偏移量多年来一直在变化。
从pytz
文档中:
不幸的是,在许多时区中,使用标准datetime构造函数的tzinfo参数对pytz都不起作用。
localize
而是将方法与原始日期时间一起使用。
>>> Pacific.localize(datetime.datetime(2013, 6, 1, 12)).astimezone(pytz.utc)
datetime.datetime(2013, 6, 1, 19, 0, tzinfo=<UTC>)
>>> Pacific.localize(datetime.datetime(2013, 1, 1, 12)).astimezone(pytz.utc)
datetime.datetime(2013, 1, 1, 20, 0, tzinfo=<UTC>)