【问题标题】:How do you extend the list of timezones Python is aware of?你如何扩展 Python 知道的时区列表?
【发布时间】:2015-03-25 11:50:02
【问题描述】:

如何让 Python 可以理解更多时区?

>>> import time
>>> date='Wed Dec 31 20:37:36 EST 1969'
>>> pattern='%a %b %d %H:%M:%S %Z %Y'
>>> seconds_from_eopch = int(time.mktime(time.strptime(date, date_pattern)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/_strptime.py", line 454, in _strptime_time
    return _strptime(data_string, format)[0]
  File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'Wed Dec 31 20:37:36 EST 1969' does not match format '%a %b %d %H:%M:%S %Z %Y'

我发现 EST 被拒绝了;我的计算机唯一能理解的时区是 tome.tzname 中列出的时区:

>>> time.tzname
('PST', 'PDT')

我天真地尝试将 EST 添加到列表中,但没有帮助。

如何“合法”添加 EST?

【问题讨论】:

    标签: python time timezone


    【解决方案1】:

    time.tzname 总是包含两个值。您应该安装 pytz 包以在 Python 中支持一般时区(因为时区信息会定期更改,它不是标准库的一部分,但需要单独下载/安装)。

    然后,您可以使用 pytz.all_timezones 中的任何元素作为时区 - 可以使用 pytz.timezone(name_of_timezone) 构建。

    【讨论】:

    • 我安装了 pytz,但没有任何区别:我仍然遇到同样的错误。
    • 这里的标准库不是很好,我倾向于使用 dateutil 包,它可以解析你给它的任何字符串。
    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多