python在闰秒上返回什么

python time和datetime模块在闰秒上返回什么?

如果我致电:23:59:60.5,我会得到什么:

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

另外,py2.7和py3之间有什么区别?

为什么它令人困惑(至少对我而言):

datetime docs我看到:

Unlike the time module, the datetime module does not support leap seconds.

time docs上,我看到使用strptime解析时有闰秒的“支持”.但是没有关于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

而日期时间刚刚爆发:

>>> 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协议定期重新同步其时间,并在插入闰秒后自动调整.

接下来,计算机时钟通常将时间报告为自纪元以来的秒数.在将第二个计数转换为包含闰秒时,由日期时间模块调整其会计.目前它没有这样做. time.time()只会根据自那时以来的秒数报告时间计数.

因此,当闰秒正式生效时,没有什么不同,除了你的计算机时钟将是1秒钟.

日期时间的问题仅涵盖表示闰秒时间戳,但它不能.无论如何都不会要求它这样做.

转载注明原文:python在闰秒上返回什么 - 代码日志