这个困扰程序员50年的问题,终于要被解决了?

新闻
闰秒概念是 1972 年提出的,之所以有这个概念,主要是因为由于潮汐等自然现象的影响,地球的自转速度并不是恒定的。

​近日,Google、微软、facebook 和亚马逊终于忍不了了,联合呼吁废除闰秒,什么是闰秒呢?闰秒到底做错了什么?为什么各大互联网公司想要废除他呢?

什么是闰秒​

闰秒概念是 1972 年提出的,之所以有这个概念,主要是因为由于潮汐等自然现象的影响,地球的自转速度并不是恒定的。

所以,每隔一段时间世界标准时间「协调世界时(UTC)」会依据地球围绕太阳运动计算的「世界时(UT)」之间出现小的偏差。

所以就需要对协调世界时进行调快或者拨慢1秒来消除这个偏差。

闰秒分为正闰秒和负闰秒,正闰秒表示需要在UTC中插入1秒,负闰秒表示需要在UTC中减少1秒。

闰秒的发生

当科学家们发现”哎呀、今年的地球转的有点快呀,赶紧加一个闰秒来校正一下吧“,这个时间就会发生”正闰秒”。

当闰秒发生时,就需要通过网络时间协议NTP (Network time protocol)来进行时间同步,NTP服务器会一级一级地下发闰秒事件通知直到最边缘的NTP服务器,然后NTP服务器就会把闰秒通知发给客户端的操作系统,由操作系统来处理闰秒通知。

如果你的计算机系统没有开启NTP服务,那么导致的问题就是你的计算机上的机器时间就会比世界时间慢1秒。

如果开了NTP服务的话,就需要操作系统来处理这个闰秒。

闰秒的处理

一般来说,闰秒的调整一般被安排在6月30日或者12月31日,一般会调整在最后一分钟,也就是说,某一年的6月30日的11:59分有61秒。那么计算机系统会如何处理这个闰秒呢?

一般有以下几种方式,如:

  • 直接显示23:59:60这样的时间。
  • 显示两次23:59:59这个时间。
  • 把这一秒平均分到最后一分钟的每一秒钟,也就是11:59还是有60秒,但是每一秒的时长是1+1/60 秒。

不同的操作系统,不同操作系统的不同版本,都会有不同的处理方式,所以我们的代码就需要有足够的鲁棒性来兼容这些闰秒的处理方式,如果没有做好兼容,那么就会发生各种各样的问题。

如需要兼容对23:59:60的处理;如操作会出现两次23:59:59,这对于一些对时间有精确的强依赖的程序来说,可能就会导致致命的问题,尤其是一些依赖时间戳的服务或者工具。

闰秒的危害

50年来,闰秒已经出现过27次,每一次出现都是一片”哀鸿遍野”,如:

2012 年 7 月 1 日零点, Reddit、Mozilla、领英、Yelp 和 Amadeus 等网站宕机数十分钟。

2015 年 7 月 1 日零点,全球约 2000 个计算机网络突然短暂中断;美国洲际交易所被迫中止交易 61 分钟。

2017 年 1 月 1 日零点,Cloudflare 等云服务厂商服务突然崩溃。

因为闰秒的发生是受自然现象影响的,所以他完全无法预测也没有任何规律。对于程序员来说,这种无规律的事情,每次发生都需要进行一次特殊处理,而每一次特殊处理都可能要付出惨痛的代价。

所以,这些国际大厂终于忍不了站出来呼吁废除闰秒了,作为一个程序员,我举双手+双脚赞成!

参考资料:

  • https://www.qbitai.com/2022/07/36387.html
  • https://www.163.com/dy/article/HD9ESP2T0531M1CO.html?f=post2020_dy_recommendshttps://os.51cto.com/article/345796.html
  • https://info.support.huawei.com/infofinder/encyclopedia/zh/NTP.htmlhttps://www.zhihu.com/question/27500849https://qa.1r1g.cn/unix/ask/23322561

责任编辑:武晓燕 来源: Hollis
相关推荐

2020-10-28 09:43:40

前端开发Vue

2021-03-05 14:40:49

Chrome浏览器内存

2019-12-20 09:32:02

人工智能程序员软件

2017-07-26 10:57:29

程序员加班原因

2021-08-09 10:24:21

技术分类数学

2020-04-23 09:22:26

程序员北京升职

2019-12-24 09:25:09

程序员技能开发者

2020-07-30 07:33:30

程序员

2011-06-09 13:58:25

程序员

2015-02-05 13:51:25

程序员

2015-10-27 15:58:20

PHP程序员问题能力

2015-02-02 10:13:43

程序员

2015-06-29 09:56:08

2023-11-02 08:43:08

protocgo兼容

2023-10-30 19:51:52

ESlint检测工具代码

2022-08-11 11:09:38

线上问题程序员

2014-07-14 10:26:02

JQueryJQuery插件

2019-12-03 10:04:18

程序员招聘开发

2015-09-24 09:04:36

程序员

2020-09-28 09:00:23

程序员北漂全款
点赞
收藏

51CTO技术栈公众号