这个tzinfo变量有什么问题?

14

我有这段代码:

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个回答

27
错误有些自我解释:tzinfo参数需要一个tzinfo对象而不是字符串。 我建议使用pytzpytz比标准库支持的时区更加强大。 您可以使用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>)

2
请注意:使用.localize()可能会导致结果的歧义(http://pytz.sourceforge.net/#problems-with-localtime)。为避免这种情况,请将时间戳转换为UTC日期时间对象,然后再将其转换为给定时区(https://dev59.com/ZGAg5IYBdhLWcg3w5eZk#23051332)。 - jfs

10
将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'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接