python - python在闰秒返回什么

标签 python datetime time leap-second

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

当我们在 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 我得到:

>>> 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 协议(protocol)定期重新同步它们的时间,并在插入闰秒后自动调整。

接下来,计算机时钟通常将时间报告为纪元以来的秒数。在将秒数转换为包括闰秒时,由 datetime 模块调整其计算。它目前不这样做。 time.time() 将仅报告基于自纪元以来的秒数的时间计数。

因此,当闰秒正式生效时,没有什么不同会发生,除此之外,您的计算机时钟将暂时为 1 秒。

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

关于python - python在闰秒返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39686553/

相关文章:

python - 如何使用带有数据的数据库在 Django 中运行测试?

PostgreSQL:无法使带 DST 的时区正常工作

Python Plotly 热图日期时间仅显示部分

emacs - 为什么 Emacs 的格式时间字符串在给定零长度持续时间时返回非午夜值?

c - Linux 获取开机后的系统时间

Javascript:计算今天和下一个特定工作日时间之间的时间

python - Tensorflow 和 OpenCV 实时分类

python - 在 Python 中的文本字符串中包含变量

python - 在现有图像上绘制带有边界矩形的轮廓

datetime - 如何使用 postgres 将时间间隔转换为小时数?