Python 如何仅获取时区的秒偏移量

Python 如何仅获取时区的秒偏移量,python,Python,对其他人来说可能很容易,但我找不到一种方法,只能从时区中获取秒数 >>> import datetime >>> dstr = '2017-06-20T19:40+02:00' >>> from dateutil.parser import parse >>> dt = parse(dstr) >>> dt datetime.datetime(2017, 6, 20, 19, 40, tzinfo=tzof

对其他人来说可能很容易,但我找不到一种方法,只能从时区中获取秒数

>>> import datetime
>>> dstr = '2017-06-20T19:40+02:00'
>>> from dateutil.parser import parse
>>> dt = parse(dstr)
>>> dt
datetime.datetime(2017, 6, 20, 19, 40, tzinfo=tzoffset(None, 7200))

如何从tzoffset对象中仅获取7200(如果为负数,则带负号)?我在python中找不到tzoffset的文档。

时区是与
dateutil
项目分开的对象,请参见:

文档没有为
dateutil.tz.offset
对象指定任何属性;它不是为直接审讯而设计的。如果您不想使用
tzinfo.utcoffset()
方法,则
dir()
将显示我们可以访问的内容:

>>> from pprint import pprint
>>> pprint(dir(dt.tzinfo))
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_name',
 '_offset',
 'dst',
 'fromutc',
 'is_ambiguous',
 'tzname',
 'utcoffset']
\u offset
属性是一个
datetime.timedelta()
对象:

>>> dt.tzinfo._offset
datetime.timedelta(0, 7200)
>>> dt.tzinfo._offset.seconds
7200

该属性是一个实现细节,因此小心不要过分依赖它。

时区是与
dateutil
项目分开的对象,请参见:

import datetime
dstr = '2017-06-20T19:40+02:00'
from dateutil.parser import parse
dt = parse(dstr)
print(dt.timetz().utcoffset().seconds)
7200
文档没有为
dateutil.tz.offset
对象指定任何属性;它不是为直接审讯而设计的。如果您不想使用
tzinfo.utcoffset()
方法,则
dir()
将显示我们可以访问的内容:

>>> from pprint import pprint
>>> pprint(dir(dt.tzinfo))
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_name',
 '_offset',
 'dst',
 'fromutc',
 'is_ambiguous',
 'tzname',
 'utcoffset']
\u offset
属性是一个
datetime.timedelta()
对象:

>>> dt.tzinfo._offset
datetime.timedelta(0, 7200)
>>> dt.tzinfo._offset.seconds
7200
该属性是一个实现细节,因此小心不要过分依赖它

import datetime
dstr = '2017-06-20T19:40+02:00'
from dateutil.parser import parse
dt = parse(dstr)
print(dt.timetz().utcoffset().seconds)
7200
详情见:


详细信息请参见:

这似乎也适用:

dt.tzinfo.utcoffset(dt).total_seconds()
Out[23]: 7200.0

这似乎也很有效:

dt.tzinfo.utcoffset(dt).total_seconds()
Out[23]: 7200.0

@marmeladze:not seconds of datetime,seconds of timezone可能重复。当偏移量为正数时,为什么会生成负号?@EdChum对于此日期字符串“2017-06-20T19:40-02:00”,tzoffset为tzoffset(无,-7200)。所以我预计偏移量将表示为负数-7200。但使用下面的答案得出的结果似乎是:dt.tzinfo._offset.seconds=>79200(86400-7200)可能重复@marmeladze:不是日期时间的秒数,而是时区的秒数。当偏移量为正时,为什么会生成负号?@EdChum对于此日期字符串“2017-06-20T19:40-02:00”,tzoffset是tzoffset(无,-7200)。因此我预计偏移量将表示为负数-7200。但使用下面的答案得出的结果似乎是:dt.tzinfo.\u offset.seconds=>79200(86400-7200)