【问题标题】:What's wrong with this tzinfo variable?这个 tzinfo 变量有什么问题?
【发布时间】:2014-04-15 12:26:40
【问题描述】:

我有这行代码:

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 是什么?它在哪里?

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:

    这个错误有点不言自明:tzinfo 参数需要 tzinfo 对象而不是字符串。不过,我建议使用pytzpytz 比标准库对时区的支持要强大得多。您可以使用pip install pytz 安装它。请参阅the docs 了解更多信息。

    >>> 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】:

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

    【讨论】:

      猜你喜欢
      • 2020-01-12
      • 1970-01-01
      • 2018-07-09
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 2012-05-26
      相关资源
      最近更新 更多