APP下载
报价宝  ›  资讯  › 

手机日期只能设置到 2038 年?这背后有个大问题……

报价宝 来源:baojiabao.com 发布时间:2022-12-21 18:29:36 09月16日更新
报价宝综合消息手机日期只能设置到 2038 年?这背后有个大问题……

世界末日到底是哪一天?这个无厘头的问题一直有着各种各样的离奇答案。当你打开手机系统设置(不是日历),关闭自动设置时间,往未来的方向滑动数字时,你会发现时间停在了 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 秒的下一秒。这一天的 03:14:08 不会到来,迎接你的将会是 1901 年 12 月 13 日 20:45:52

使用脚本模拟系统时间,会出现时间的跳变(平台 Debian GNU / Linux (内核 2.4.22))丨 William Porquet / deepsky.com

对于很多电子设备而言,这是个毁灭性的打击。文件的创建与修改、应用软件的运行、网络系统的同步…… 时间作为一个关键数值,在整个电子系统里起着绝对重要的作用。因此有一阵子苹果手机的语音助手 Siri,还把这一天当成了"世界末日"。为什么是这一天?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,本来的加号变成了减号,时间突然穿越到过去。

从上到下分别是二进制秒数、对应的十进制秒数、32 位 Unix 系统时间、实际时间。超过 2147483647 后,符号位会变成 1(负号),整个数字会突然发生翻转,回到 1901 年。丨 Pemu / Wikicommons

这个存在于将来的问题,它会给我们带来怎样的影响?回溯过往,一次又一次的"千年虫"问题已经给了我们一些预告

千年之外的千年虫

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 也很正常。因为世界上总在发生情理之中、意料之外的事情

参考文献

本文来自微信公众号:果壳 (ID:Guokr42),作者:Owl,编辑:窗敲雨,科学审核:Andrija

文章标签: 问题 系统 时间 千年 千年虫 手机 日期 世界 电子 银行 数字 末日 德国 微软 二进制 位数 情况 科学 程序 符号 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 手机价格 电视机价格 小米手机价格 红米手机价格