python在闰秒返回什么



python timedatetime模块在闰秒上返回什么?

当我们在23:59:60. 05 如果我打电话:

  • time.time()
  • datetime.datetime.utcnow()
  • datetime.datetime.now(pytz.utc)

同样,py2.7和py3有什么区别吗?


为什么它令人困惑(至少对我来说):

从datetime文档中我看到:

与time模块不同,datetime模块不支持闰秒。

在时间文档中,我看到在使用strptime进行解析时"支持"闰秒。但是没有关于time.time()的评论。

我看到使用time我得到:

>>> time.mktime(time.strptime('2016-06-30T23:59:59', "%Y-%m-%dT%H:%M:%S"))
1467327599.0
>>> time.mktime(time.strptime('2016-06-30T23:59:60', "%Y-%m-%dT%H:%M:%S"))
1467327600.0
>>> time.mktime(time.strptime('2016-07-01T00:00:00', "%Y-%m-%dT%H:%M:%S"))
1467327600.0

datetime只是爆炸:

>>> dt.datetime.strptime('2016-06-30T23:59:60', "%Y-%m-%dT%H:%M:%S")
Traceback (most recent call last):
  File "<stdin>", line 1, in &lt;module>
ValueError: second must be in 0..59

那么我在那个确切的时间(在闰秒的中间)会得到什么?

我读过橡胶时间,时钟变慢,重复的秒,以及各种疯狂的想法,但是我应该对python期待什么呢?

注意:如果你想知道我是否没有更好的事情要做,关心它,闰秒正在接近!!!!

闰秒有时是手工安排的。目前,计算机时钟没有闰秒的功能;没有标准告诉他们预先插入一个。相反,计算机时钟通过NTP协议周期性地重新同步它们的时间,并在插入闰秒后自动调整。

其次,计算机时钟通常报告从纪元开始的时间为秒。这将取决于datetime模块在将秒计数转换为包括闰秒时调整其会计。它目前还没有这样做。time.time()将只报告基于seconds-since-the-epoch的时间计数。

所以,当闰秒正式生效时,没有什么不同的会发生,除了你的计算机时钟会在一段时间内偏离1秒。

datetime的问题只包括表示的闰秒时间戳,这是它不能做到的。无论如何,它都不会被要求这样做。

Python的mktime行为在很大程度上继承自C语言,这是由POSIX指定的。规范并不像你想象的那么简单,实际情况甚至更复杂。

我认为这篇文章是对各种问题的一个很好的介绍:

datetime模块,正如您所观察到的,就像没有闰秒这样的东西一样。

相关内容

  • 没有找到相关文章

最新更新