python 从日期时间对象获取时区值
python get timezone value from datetime object
有谁知道如何获取 ISO8601 时间戳的时区值(以分钟、小时等为单位)?我可以在 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)
问题是,值似乎已固定到该对象。
这不是最有效的方法,事实上,我很乐意知道其他答案,但是,我会这样做:
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
只需使用(如果您使用 Python 2.7 或更高版本):
datetime_obj.utcoffset().total_seconds()
使用utcoffset()
to get the timedelta
, and total_seconds()
转换为秒。您可以阅读链接的文档,了解有关它们究竟在做什么的信息。
如果您需要将此偏移量添加到其他 datetime
,那么您可以使用 utcoffset()
取回 timedelta
。虽然 return 值可能看起来有点奇怪:
datetime.timedelta(-1, 57600) # equivelant to datetime.timedelta(seconds=-28800)
这是因为 timedelta
标准化负值的方式,这在 datetime.timedelta
中也有说明。
有谁知道如何获取 ISO8601 时间戳的时区值(以分钟、小时等为单位)?我可以在 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)
问题是,值似乎已固定到该对象。 这不是最有效的方法,事实上,我很乐意知道其他答案,但是,我会这样做:
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
只需使用(如果您使用 Python 2.7 或更高版本):
datetime_obj.utcoffset().total_seconds()
使用utcoffset()
to get the timedelta
, and total_seconds()
转换为秒。您可以阅读链接的文档,了解有关它们究竟在做什么的信息。
如果您需要将此偏移量添加到其他 datetime
,那么您可以使用 utcoffset()
取回 timedelta
。虽然 return 值可能看起来有点奇怪:
datetime.timedelta(-1, 57600) # equivelant to datetime.timedelta(seconds=-28800)
这是因为 timedelta
标准化负值的方式,这在 datetime.timedelta
中也有说明。