Python 访问datetime对象的时区信息
我可以像这样创建一个特定于时区的Python 访问datetime对象的时区信息,python,datetime,timezone,Python,Datetime,Timezone,我可以像这样创建一个特定于时区的datetime对象 import datetime d = datetime.datetime.now().astimezone() d.tzinfo.delta d.tzinfo.name 结果是 datetime.datetime(2018, 4, 2, 15, 12, 2, 807451, tzinfo=datetime.timezone(datetime.timedelta(0, 7200), 'CEST')) 看起来tzinfo由两个值/属性表示
datetime
对象
import datetime
d = datetime.datetime.now().astimezone()
d.tzinfo.delta
d.tzinfo.name
结果是
datetime.datetime(2018, 4, 2, 15, 12, 2, 807451, tzinfo=datetime.timezone(datetime.timedelta(0, 7200), 'CEST'))
看起来tzinfo
由两个值/属性表示:一个timedelta和一个字符串。但是我怎样才能访问它们呢?
我想做这样的事情
import datetime
d = datetime.datetime.now().astimezone()
d.tzinfo.delta
d.tzinfo.name
我需要这些信息,以便能够(反)序列化从JSON到JSON的日期时间
我不想将第三方软件包用于此类解决方案。您询问的是datetime.tzinfo,它是一个抽象基类,如文档所示 datetime附带了一个名为datetime.timezone的tzinfo抽象基类的实现,该基类已记录在案
最后一个链接的下方是timezone.utcoffset和timezone.utcname上的文档,如果是时区,则可以通过这些文档访问您在tzinfo上询问的属性。然而,这并不是该抽象类的唯一实现。例如,如果您使用的是pytz时区,则需要阅读该时区上的文档。
tzinfo
在本例中是:
timezone
类是tzinfo
的一个子类,其每个实例表示由UTC的固定偏移量定义的时区
您可以使用andtzinfo.utcname()
方法访问增量和名称。对于timezone()
实例,这些参数中的每一个都会被忽略,但通常您会传入它们所附加到的datetime
实例:
d.tzinfo.utcoffset(d)
d.tzinfo.utcname(d)
您通常会在datetime.datetime
实例上调用这些函数,该实例具有相同的方法(但不带参数),然后这些函数将处理将正确的参数传递给包含的tzinfo
属性上的方法
演示:
datetime.timezone()
子类只是tzinfo
时区的一个实现,像pytz这样的第三方库提供了自己的,utcoffset()
和tzname()
返回值可能因附加历史信息的时区而异。既然您说您没有使用第三方软件包,我假设您只是使用datetime.timezone,在这种情况下,我最后给出的警告不适用于您。不过,如果您改变主意,以后开始使用第三方软件包,这可能会变得很重要。