我可以创建一个时区特定的 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时区,那么您需要在其中阅读文档。