utcoffset方法在datetime中做了什么 - Python

时间:2016-11-19 16:35:34

标签: python datetime

我知道这个问题的答案通常是“转到Python's documentation”。我已经阅读过了,并且仍然不能100%确定uctcoffset方法的作用。

我认为它需要时区 - utc并给出差异,但我需要100%确定。

2 个答案:

答案 0 :(得分:2)

是的,它完全按照你的想法行事。 Here是官方文档。

编辑: 确切地说,它不需要时区,需要0个参数。您可以在datimeobject上调用它,该对象具有与之关联的时区(如果它是时区感知的)。在这种情况下,该方法将返回timedelta对象,该对象表示datetime对象的时区与utc之间的差异

答案 1 :(得分:2)

utcoffset的{​​{1}}方法为您提供日期时间的“挂钟”时间与UTC中同一时间点的“挂钟”时间之间的差异,因此,确切地说如你所料(datetime)。它是一个函数的原因是,对于许多时区(例如夏令时),偏移量在一年内发生变化。举个例子:

dt - dt_as_utc

如您所见,这同样适用于from datetime import datetime, timedelta from dateutil import tz NYC = tz.gettz('America/New_York') # Note: ambiguous time support # requires version >= 2.6.0, be aware. dt1 = datetime(2015, 5, 21, 12, 0, tzinfo=NYC) # EST dt2 = datetime(2015, 12, 21, 12, 0, tzinfo=NYC) # EDT print(dt1.utcoffset() / timedelta(hours=1)) # -4 print(dt1.tzname()) # EDT print(dt2.utcoffset() / timedelta(hours=1)) # -5 print(dt2.tzname()) # EST 功能。对于天真的日期时间(没有日期时间),tzname()utcoffset()都应返回tzname()

作为一个注释,我通常会建议使用此函数来计算 UTC时间戳,而应该使用None和{{3}或者astimezone()或者,如果您使用的是Python版本> = 3.2,则可以使用dateutil.tz.tzutc对象。