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)