繁体   English   中英

如何说服DateTime对象(用pytz时区初始化)为我提供pytz可以识别的时区代码? (蟒蛇)

[英]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()名称传递回pytz.timezone()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM