pytz
要求您使用.astimezone
方法进行往返UTC的所有时间转换。然而,在一个特殊情况下——datetime.fromtimestamp
——看起来您应该能够使用Python库的datetime方法。
它似乎在这里起作用:
>>> import datetime
>>> import pytz
>>> ambigtime = 1352017800 # http://www.wolframalpha.com/input/?i=1352017800+unix+time+in+Los+Angeles
>>> amla = pytz.timezone('America/Los_Angeles')
>>> datetime.datetime.fromtimestamp(ambigtime, tz=amla)
datetime.datetime(2012, 11, 4, 1, 30, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)
>>> datetime.datetime.fromtimestamp(ambigtime + 3600, tz=amla)
datetime.datetime(2012, 11, 4, 1, 30, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
是否存在datetime.fromtimestamp
无法在pytz
时区为您提供正确结果的情况?
据我所知,pytz.timezone()
将为您提供tzinfo的一个实例(或者更确切地说是它的一个子类),因此与datetime.fromtimestamp()
一起使用是完全可以的。
只要pytz
已经更新了zoneinfo文件,就可以使用该方法创建本地化的日期时间。然而,使用astimezone()
方法在两个区域之间转换日期时间确实更容易。如果我是正确的,它基本上切换了datetime上的tzinfo
属性。