首页 > 数码 > 千年虫又来了?手机日期只能设置到2038年

千年虫又来了?手机日期只能设置到2038年

浏览:525ning发布于2022-03-13 08:41

世界末日到底是哪一天?这个无厘头的问题一直有着各种各样的离奇答案。当你打开手机,关闭自动设置时间,往未来的方向滑动数字时,你会发现时间停在了2038年。

不仅是手机,在电脑上,当你尝试将时间从2037年再往上调整时,会发现不管怎么按设置按钮,日期都不会继续改变。

手机日期只能设置到2038年

2038年到底会发生什么?为什么各种设备都无法“逾越”2038年?在网上搜寻2038,你还能发现有人专门设置了倒计时网页。这其中包含了一个更加精确的时间:2038年1月19日 3点14分7秒。而下一秒,你的电子设备将会穿越回到1901年。

著名的“2038问题”,将在此刻爆发。

2038年,时间“摧毁”系统

问题发生在2038年1月19日 3点14分7秒的下一秒。这一天的03:14:08不会到来,迎接你的将会是1901年12月13日20:45:52。

对于很多电子设备而言,这是个毁灭性的打击。文件的创建与修改、应用软件的运行、网络系统的同步……时间作为一个关键数值,在整个电子系统里起着绝对重要的作用。因此有一阵子苹果手机的语音助手Siri,还把这一天当成了“世界末日”。为什么是这一天?Siri回答中的关键词也给出了答案。

Unix、32位,这两个词让2038年的这一天注定成为末日。Unix是一种操作系统,这种系统中计时方式是以1970年1月1日 00:00:00为基准,按秒为单位进行增减。比如到2022年1月1日0点,只需要用基准值加上1640966400秒。而我们现在使用的安卓、苹果系统都属于类Unix系统,采用了同样的方案。

电子系统使用0和1对数据进行储存,也就是二进制。如果只用1位数,只能表示0和1,如果2位数,则可以用00、01、10、11分别表示0、1、2、3这四个数。随着位数的增加,二进制可以表示的数也越来越大,但总会遇到上限。如果用32个0、1储存数字,第一位表示符号,0代表+,1代表-,则剩下31位最大可以表示2147483647。在计算机资源非常宝贵的年代,用32位来放置时间,已经很够用了。

1970年1月1日00:00:00 + 2147483647秒 = 2038年1月19日 3点14分7秒。下一秒,数据就会出现“装不下”的情况,发生溢出。此时第一位符号位从0变成1,本来的加号变成了减号,时间突然穿越到过去。

就在今年年初,“2022年虫”让微软的程序员体会了新年大加班。1月1日,微软的邮件服务系统Exchange突然中断,使用该服务的用户都无法发送电子邮件。微软随后给出了声明,称该问题与日期检查失败以及新年的变化有关。简单点说,和2038问题一样,时间“溢出”了。好在微软团队加班加点,在当天解决了该问题。

在未来,“类千年虫”问题一定还会出现。对于可以预料的问题,人们已经开始尝试提供解决方法。比如使用新的格式存储时间信息。与此同时,系统团队提供的新内核也在解决32位平台上的“历史问题”。你也不用太担心,毕竟到那时,你应该已经换了好几波手机了。

不过,再遇到类似的突发Bug也很正常。因为世界上总在发生情理之中、意料之外的事情。


健康