这个tzinfo变量有什么问题?

15 投票
2 回答
40727 浏览
提问于 2025-04-18 02:37

我有这一行代码:

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

但是它总是给我这个错误:

TypeError: tzinfo argument must be None or of a tzinfo subclass, not type 'str'

tzinfo是什么?它应该放在哪里呢?

2 个回答

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'))
28

这个错误的意思比较明显: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>)

撰写回答