访问DateTime对象的时区信息



我可以创建一个时区特定的 datetime对象

import datetime
d = datetime.datetime.now().astimezone()

结果是

datetime.datetime(2018, 4, 2, 15, 12, 2, 807451, tzinfo=datetime.timezone(datetime.timedelta(0, 7200), 'CEST'))

看来tzinfo由两个值/属性表示:序列和字符串。但是我该如何访问它们?我想做这样的事情

d.tzinfo.delta
d.tzinfo.name

我需要此信息,才能(DE(逐渐序列dateTime。

我不想将第三方软件包用于此类解决方案。

tzinfo在这种情况下是datetime.timezone()类的实例:

timezone类是tzinfo的子类,每个实例表示由UTC固定偏移定义的时区。

您可以使用tzinfo.utcoffset()tzinfo.utcname()方法访问三角洲和名称。对于timezone(),这些参数均被忽略,但是通常您会在datetime实例中通过:

d.tzinfo.utcoffset(d)
d.tzinfo.utcname(d)

您通常会在datetime.datetime实例上调用这些,该具有相同的方法(但不采用参数(,然后这些将处理在包含的tzinfo上的方法中,将正确的参数传递给了该方法属性。

演示:

>>> import datetime
>>> d = datetime.datetime.now().astimezone()
>>> d.utcoffset()
datetime.timedelta(seconds=7200)
>>> d.tzname()
'CEST'
>>> d.tzinfo.utcoffset(d)
datetime.timedelta(seconds=7200)
>>> d.tzinfo.utcoffset(d) is d.utcoffset()  # they are the same object
True

datetime.timezone()子类只是tzinfo时区的一个实现,例如PYTZ(例如PYTZ(提供了自己的utcoffset()tzname()返回值,与随附的历史信息相差很大。

您正在询问DateTime.tzinfo,这是一个抽象基类,如下所示。

DateTime随附Tzinfo摘要基类的实现,称为DateTime.TimeZone,此处记录。

在最后一个链接下方是timezone.utcoffset和timezone.utcname上的文档,这是访问您在tzinfo上询问的属性的方法。但是,这并不是该抽象类的唯一实现。例如,如果您使用的是pytz时区,那么您需要在其中阅读文档。

相关内容

  • 没有找到相关文章

最新更新