一、什么是2038年问题
2038年问题是指在使用POSIX时间的32位计算机应用程序上,格林尼治时间2038年1月19日凌晨03:14:07(北京时间:2038年1月19日中午11:14:07)之后无法正常工作。
在大部分的32位操作系统上,此“time_t”数据模式使用一个有符号32位整数(signed int32)存储计算的秒数。依照此“time_t”标准,在此格式能被表示的最后时间是第2147483647秒(代表格林尼治时间2038年1月19日凌晨03:14:07)。下一秒,即格林尼治时间2038年1月19日凌晨03:14:08,由于32位整型溢出,时间将会被“绕回”(wrap around)成一个负数,变成了第 -2147483648 秒(代表格林尼治时间1901年12月13日20:45:52),造成应用程序发生严重的时间错误,而无法运行。
二、测试结果
测试结果是一切正常;这里我给出了两种可能的猜测:
猜测1:2038年问题只有在硬件与软件的共同作用下才会触发;如果在64位硬件上安装32位系统,那么系统与程序将不会遇到2038年问题;
猜测2:当时在调整BIOS时间时有符号32位整数(signed int32)存储计算的秒数没有发生突变,导致2038年问题没有触发。
由于现在我们没有这两个条件:
一、真实的2038年
二、一台纯32位平台电脑(32位CPU)
所以2038年问题需要什么条件才能触发,在GMT 03:14:08 2038/1/19这一秒到来之前将会一直是一个迷;也欢迎大家在评论区上留下自己的答案。
68 天前