【问题标题】:How to handle POSIX timezone information (like CST) for pytz?如何为 pytz 处理 POSIX 时区信息(如 CST)?
【发布时间】:2020-07-17 04:39:33
【问题描述】:

我有时区字符串'CST' 并尝试在pytz 中使用它。

不幸的是,这失败了:

cst = pytz.timezone('CST')

File "/home/user/venv/numba/lib/python3.6/site-packages/pytz/__init__.py", line 181, in timezone
  raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: 'CST'

我应该怎么做才能避免这个错误?

【问题讨论】:

标签: python timezone pytz timestamp-with-timezone


【解决方案1】:

CST 本身不是有效的时区标识符。

无法知道CST 是被解释为(美国)“中部标准时间”(UTC-6)、“古巴标准时间”(UTC-5)还是“中国标准时间”( UTC+8)。

改为传递完全限定的基于位置的IANA time zone identifier,例如America/ChicagoAmerica/HavanaAsia/Shanghai

【讨论】:

    【解决方案2】:
    import pytz
    
    
    def valid_timezone(timezone):
        try:
            pytz.timezone(timezone)
        except pytz.exceptions.UnknownTimeZoneError:
            return False
        return True
    
    if valid_timezone('CST'):
        # go ahead...
        pass
    else:
        # not supported timezone..
        pass
    

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,更有可能吸引投票。
    猜你喜欢
    • 2014-03-10
    • 2012-12-17
    • 2021-09-06
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2020-09-01
    • 2015-10-05
    相关资源
    最近更新 更多