微信号:gh_8590062d6d9b

介绍:原创/翻译的编程小知识, 目标是每篇文章只需一分钟时间阅读, 利用碎片时间学习技术

Wait a second: 关于闰秒

2016-07-16 20:21 Yu Hao

2016年的最后一天将增加一秒, 也就是所谓的闰秒, 而上一次的闰秒发生在2015年6月30日。 闰秒总是被加在某一年的6月30日或者12月31日的最后一秒之后。

增加闰秒的根本原因是地球的自转速度正在缓慢的变慢, 每天的平均长度和86400秒(秒现在是通过原子钟定义的, 很精确)有细微的差别。 当这些细微的差别累积到一定程度(超过0.9秒)时, 就会通过增加或减少额外的一秒来调节。 目前为止所有的调节都是增加闰秒。

程序员们显然是不喜欢闰秒这个东西的, 因为它让本来已经复杂的时间变得更加复杂。 尤其是闰秒是难以预测的。 事实上, 很老的Linux内核在遇到闰秒的时候会panic。

一些相关API中可以看到闰秒的影子, 比如Ruby的 Time#sec 方法文档是这样的:

sec → fixnum
Returns the second of the minute (0..60) for time.

注意到值的范围了么? 通常一分钟的秒数是从0到59, 而额外的60则是为了闰秒准备的。

C/C++的struct tm 结果中, tm_sec的定义也是类似。 在C89/C++98中, 它的范围是0-61, 而C99/C++11开始, 它的范围是0-60。 这是因为当年是认为可能有一次增加2闰秒的时候, 但后来实际上每次都是1闰秒。

虽然废除闰秒的提议一直都有, 但目前的决议是, 至少在2023年之前闰秒还将继续存在。


这多出来的1秒钟, 应该干点啥呢? 参照题图是个选择:


 
一分钟的编程知识 更多文章 常量0是几进制的数? int main()还是void main() 为什么计算机启动叫做boot? 自然界的二叉树欣赏 Vim学习的个人心得
猜您喜欢 这个菲佣相机里的疲惫香港,竟击败全世界6万摄影师获最高摄影奖!? 中国区TOP1000APP榜 | QuestMobile2016年中盘点,如何走过创业之夏? 如何配置一个 Docker 化持续集成的 PHP 开发环境(四) Android中应用锁的实现之账号盗取 节后第一天慕女神送你书籍给你助力!——评论区留言就送经典IT书籍!