如何为 pytz 处理 POSIX 时区信息(如 CST)?

Posted

技术标签:

【中文标题】如何为 pytz 处理 POSIX 时区信息(如 CST)?【英文标题】:How to handle POSIX timezone information (like CST) for pytz? 【发布时间】: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'

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

【问题讨论】:

相关:How to get system timezone setting and pass it to pytz.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

【讨论】:

请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,更有可能吸引投票。

以上是关于如何为 pytz 处理 POSIX 时区信息(如 CST)?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 cron 触发器处理石英夏令时的用户时区?

如何为每个线程设置时区? [关闭]

如何为 JDBC Connection 设置时区,避免找不到 SqlException 时区?

使用 pytz 获取时区的国家代码?

如何为 ClickHouse jdbc 连接设置会话时区?

pytz库处理时区转换