我怎样才能说服 DateTime 对象(用 pytz 时区初始化)给我一个 pytz 识别的时区代码? (Python)
How can I convince DateTime object (initialized with pytz timezone) to get me a timezone code recognized by pytz? (Python)
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()
如果这就是你需要它的原因。
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()
如果这就是你需要它的原因。