Python从DateTime对象获取时区值



有人知道如何获得ISO8601时间戳的时区值(以分钟为单位,HRS等)?我可以在tzinfo对象中看到它,但似乎无法将值提出。这是我到目前为止所做的,但是如何将值-28800列入变量?

import dateutil.parser
import datetime
firststarttime = '2008-12-31T23:00:00-08:00'
datetime_obj = dateutil.parser.parse(firststarttime)
datetime_obj
Out[57]: datetime.datetime(2008, 12, 31, 23, 0, tzinfo=tzoffset(None, -28800))
datetime_obj.tzinfo
Out[46]: tzoffset(None, -28800)

只使用(如果您在Python 2.7或更高版本上):

datetime_obj.utcoffset().total_seconds()

使用utcoffset()获取timedelta,然后使用total_seconds()转换为秒。您可以阅读链接的文档以获取有关他们到底在做什么的信息。

如果您需要将此偏移添加到其他datetime中,则可以使用utcoffset()恢复timedelta。虽然返回值看起来有些奇怪:

datetime.timedelta(-1, 57600)  # equivelant to datetime.timedelta(seconds=-28800)

这是因为timedelta归一化的负值,这也在datetime.timedelta中指出。

问题是,值似乎已固定在该对象上。这不是最有效的方法,实际上,我很高兴知道其他答案,但是,这就是我的做法:

import dateutil.parser
import datetime
import re
firststarttime = '2008-12-31T23:00:00-08:00'
datetime_obj = dateutil.parser.parse(firststarttime)
s = str(datetime_obj.tzinfo)
p = re.compile(",s.?d+")
result = p.search(s).group()
result = int(result[2:])

打印

print(result)
>>> -28800 # as integer

相关内容

  • 没有找到相关文章

最新更新