如何说服 DateTime 对象(使用 pytz 时区初始化)为我获取 pytz 识别的时区代码?(蟒蛇)


import pytz
import datetime
timezone = pytz.timezone('Poland')
date = timezone.localize(datetime.datetime(2018, 10, 1))
pytz.timezone(date.tzname())

不幸的是,在Python 3.5.2中,它崩溃了

Traceback (most recent call last):
  File "timezones.py", line 6, in <module>
    pytz.timezone(date.tzname())
  File "/usr/local/lib/python3.5/dist-packages/pytz/__init__.py", line 178, in timezone
    raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: 'CEST'

在程序时区感知时间对象的一部分中创建。在其他部分,有必要取回时区标识符。

为了避免 XY 问题:我正在使用skyfield库计算日出和日落数据。为此,我需要将时区作为参数之一传递。

从我在 https://docs.python.org/3/library/datetime.html 看到的情况来看,有一个timezone,但用于设置时区,而不是获取它。

TZ 数据库时区名称存储为 pytz.timezone() 返回的区域对象的 zone 属性:

>>> import pytz
>>> import datetime
>>> 
>>> timezone = pytz.timezone('Poland')
>>> date = timezone.localize(datetime.datetime(2018, 10, 1))
>>> date.tzinfo.zone
'Poland'

如您所见,区域对象本身在调用 localize() 后可用作date.tzinfo,因此您可以直接使用它,而不是将名称传回pytz.timezone(),如果这就是您需要它的原因。

相关内容

  • 没有找到相关文章

最新更新