这个tzinfo变量有什么问题?

Zac*_*tes 2 python python-2.7 python-3.x

我有这行代码:

datetime.datetime.fromtimestamp(0, "<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>")
Run Code Online (Sandbox Code Playgroud)

它一直给我这个错误:

TypeError: tzinfo argument must be None or of a tzinfo subclass, not type 'str'
Run Code Online (Sandbox Code Playgroud)

它到底是什么tzinfo

πόδ*_*κύς 13

错误有点不言自明:tzinfo参数需要一个tzinfo对象而不是一个字符串.pytz不过,我建议使用.pytz比标准库对时区的支持更强大.你可以安装它pip install pytz.有关详细信息,请参阅文档.

>>> from datetime import datetime
>>> import pytz
>>> d = datetime.fromtimestamp(0)
>>> pacific = pytz.timezone('US/Pacific')
>>> pacific
<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>
>>> pacific_date = pacific.localize(d)
>>> pacific_date
datetime.datetime(1969, 12, 31, 17, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

  • 注意:使用 `.localize()` 可能会导致[结果出现歧义](http://pytz.sourceforge.net/#problems-with-localtime)。[将时间戳转换为 utc datetime 对象,然后将其转换为给定时区](http://stackoverflow.com/a/23051332/4279) 以避免它。 (2认同)

jfs*_*jfs 11

要将 POSIX 时间戳转换为本地时区,例如'US/Pacific'

from datetime import datetime
import pytz # $ pip install pytz

timestamp = 0 # seconds since the Epoch
local_dt = datetime.fromtimestamp(timestamp, pytz.timezone('US/Pacific'))
Run Code Online (Sandbox Code Playgroud)