首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python在闰秒上返回了什么?

python在闰秒上返回了什么?
EN

Stack Overflow用户
提问于 2016-09-25 11:59:26
回答 2查看 5.1K关注 0票数 13

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

当我们在23:59:60.5时,我会得到什么,如果我打电话:

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

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

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

我从日期文档中看到:

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

时间文档上,我看到在使用strptime进行解析时,存在对闰秒的“支持”。但对time.time()没有任何评论。

我看到使用time我得到:

代码语言:javascript
复制
>>> 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就这样爆炸了:

代码语言:javascript
复制
>>> 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

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

我读过关于橡胶时代、时钟慢下来、重复几秒钟以及各种疯狂想法的文章,但是我应该对蟒蛇有什么期望呢?

注意:如果你想知道我是否没有更好的方法去关心它,一个闰秒就要到来了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-25 12:08:58

闰秒有时是手动调度的。目前,计算机时钟还没有达到闰秒的功能;也没有标准可以预先告诉它们插入一个。相反,计算机时钟通过NTP协议周期性地重新同步它们的计时,并在插入了闰秒之后自动调整。

其次,计算机时钟通常将时间报告为自那个时代以来的秒数。在将第二个计数转换为包含闰秒时,应该由datetime模块来调整其记帐。它目前没有这样做。time.time()将只报告一个时间计数,根据秒-自时代.

所以,当闰秒正式生效时,除了你的电脑时钟在一段时间内是1秒之外,没有什么不同的。

datetime的问题只是代表一个闰秒时间戳,但它不能,无论如何也不会被要求这样做。

票数 11
EN

Stack Overflow用户

发布于 2019-02-08 22:01:32

Python的mktime行为在很大程度上是从C继承而来的,C是POSIX指定的。规范并不像您想象的那么简单,现实情况甚至更加复杂。

我认为本文很好地介绍了各种问题:Unix闰秒混乱

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39686553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档