世界末日到底是哪一天?这个无厘头的问题一直有各种奇怪的答案。打开手机,关闭自动设置时间,以后滑动数字,就会发现时间在2038年停止了。(约翰肯尼迪)时间。
小米,华为可以设置到2037年12月31日,iphone也只剩下两天了。
不仅在手机上,在电脑上,从2037年开始,如果想重新调整时间,可以看出按设置按钮不会继续更改日期。
如果日的调整超过2038年,将于2038年1月1日停止
2038年会发生什么?为什么各种设备都不能“克服”2038年?上网搜索2038,你还会发现有人专门设置了倒计时页面。其中包括更准确的时间:2038年1月19日3点14分7秒。然后下一秒,你的电子设备将回到1901年。
著名的“2038问题”将在这一刻爆发。
从发生到“2038年问题”,还在。
2038年,时间“摧毁”了系统。
问题发生在2038年1月19日3点14分7秒的下一秒。当天0:14:08不会来,迎接你的将是1901年12月13日20336045336052。
使用脚本模拟系统时间会导致时间跳跃(Debian GNU/Linux(内核2.4.22))、William Porque
对许多电子设备来说,这是毁灭性的打击。文件创建和修改、应用程序操作、网络系统同步.时间作为核心数字,在整个电子系统中起着绝对重要的作用。所以有一段时间,iphone的语音助手Siri认为这一天是“世界末日”。为什么是这一天?Siri回答的关键词也给出了答案。
Siri对世界末日问题的最初回答(新版系统不再有回答)
UNIX,第32位,这两个词将2038年的这一天定为结束。UNIX是以1970年1月1日00:00336000为基准,以秒为单位增减的操作系统。例如,到2022年1月1日0点为止,标准值只需加上1640966400秒。我们目前使用的Android、苹果系统都属于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日00336000336000 2147483647秒=2038年1月19日3点14分7秒。下一秒将出现数据“不匹配”的情况,并出现溢出。此时,第一个符号位从0更改为1,原始加号更改为减号,时间突然移动到过去。
ge/tos-cn-i-qvj2lq49k0/c0d1a463ec914c9e8d9aeb824c1cf2db?from=article.detail&_iz=31825&index=5" width="400" height="130"/>图丨Pemu/Wikicommons
(从上到下分别是二进制秒数、对应的十进制秒数、32位Unix系统时间、实际时间。超过2147483647后,符号位会变成1(负号),整个数字会突然发生翻转,回到1901年。)
这个存在于将来的问题,它会给我们带来怎样的影响?回溯过往,一次又一次的“千年虫”问题已经给了我们一些预告。
千年之外的千年虫
2000年,千禧年。而在很多应用程序看来,这一年会变成1900年。
同样因为硬件资源宝贵,早期程序使用了年份的后两位数字来表示日期,而前两位数都默认为19。这个不起眼的时间问题,在整个世界引发了巨大的关注。政务系统、银行系统、航空系统等多个系统都可能受到影响而失效。全球各地对这一问题进行了响应,试图解决这一问题。我国多次发文强调这一问题的重要性。美国也推出了有关千年虫问题的法案,以敦促各行业共享信息解决此类问题。
全球各地对“千年虫”采取行动丨人民日报网络版
多亏人们对“千年虫”的高度重视,使得这一问题在集中爆发前得以解决。但在此之后,类似“千年虫”的事件却依然层出不穷。
2010年的第一周,德国约3千万张银行卡同时“失效”。持卡人不仅无法直接刷卡消费,连在自动取款机上取钱都成问题。这不仅影响了本国居民的生活,也使得在外度假的德国人滞留在当地。
由于不同编码方式存在差异,2010在德国的银行系统中被错误地识别成2016。银行卡也因此“被过期”了。同样的情况出现在使用Windows Mobile系统的手机上:你在2010年第一天收到的新年短信,会被系统显示成2016年。
德国加速修复了银行系统,所幸没有造成更大的损失。但放眼太空,事情就没那么简单了。2013年9月,航天器Deep Impact突然失联,迫使美国航空航天局宣布相关探测任务正式结束。Deep Impact的首席任务科学家 Mike A'Hearn认为,这是一个“千年虫问题”。航天器的部分软件无法正确识别2013年8月11日之后的日期,导致计算机不断重启。最终,科学家们失去了航天器的信号。
Deep Impact与坦普尔1号彗星相遇模拟图丨NASA
就在今年年初,“2022年虫”让微软的程序员体会了新年大加班。1月1日,微软的邮件服务系统Exchange突然中断,使用该服务的用户都无法发送电子邮件。微软随后给出了声明,称该问题与日期检查失败以及新年的变化有关。简单点说,和2038问题一样,时间“溢出”了。好在微软团队加班加点,在当天解决了该问题。
在未来,“类千年虫”问题一定还会出现。对于可以预料的问题,人们已经开始尝试提供解决方法。比如使用新的格式存储时间信息。与此同时,系统团队提供的新内核也在解决32位平台上的“历史问题”。你也不用太担心,毕竟到那时,你应该已经换了好几波手机了。
不过,再遇到类似的突发Bug也很正常。因为世界上总在发生情理之中、意料之外的事情。
参考文献
[1]Year 2038 Problem Countdown.
[2]The Project 2038 Frequently Asked Questions (FAQ).
[3]Why does Siri say the world will end on January 2038?
[4]Unix time.
[5]Unix Time Stamp - Epoch Converter.
[6]Unix-like.
[7]2038年问题.
[8]中国解决计算机2000年问题的进展情况.
[9]话说“千年虫”.
[10]Clinton Urges Americans To Act On Y2K Problem.
[11]Y2K-type bug hits German cash, credit cards.
[12]Carry cash as well as a card, says German bank association.
[13]Windows Mobile Bug Dates Messages from 2016.
[14]NASA Declares End to Deep Impact Comet Mission. .
[15]Exchange Year 2022 Problem: FIP-FS Scan Engine failed to load – Can’t Convert “2201010001” to long (2022/01/01 00:00 UTC).
[16]Email Stuck in Exchange On-premises Transport Queues.
作者:Owl
编辑:窗敲雨
科学审核:Andrija
本文来自果壳,未经授权不得转载.
如有需要请联系sns@guokr.com
1.《【2038年】手机日期只能设定到2038年吗?这背后有个大问题。》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【2038年】手机日期只能设定到2038年吗?这背后有个大问题。》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/2980769.html