Unix 时间戳
unix shi jian chuo
自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数,在计算机领域广泛用于表示时间点。
er ling san ba nian wen ti
2038 年问题 (又称 Y2K38) 发生在以 32 位有符号整数存储 Unix 时间戳的系统到达其最大值 2,147,483,647 的时刻,即 2038 年 1 月 19 日 03:14:07 UTC。下一秒将导致整数溢出,数值回绕为 -2,147,483,648,被解释为 1901 年 12 月 13 日。任何依赖 32 位 time_t 的软件从该时间点起都将产生错误的日期。
现代 64 位操作系统已基本解决了这个问题,但风险仍存在于嵌入式系统 (物联网设备、工业控制器、汽车 ECU)、遗留文件格式 (ext3 文件系统时间戳)、过时的数据库模式,以及内部仍使用 32 位整数的程序库中。任何使用寿命较长且设计于 64 位普及之前的系统都有潜在风险。
根本修复方法是将时间戳存储迁移到 64 位整数,64 位整数可以表示约 2920 亿年,对实际用途而言没有限制。Linux 内核在 5.6 版本 (2020 年发布) 中增加了对 32 位系统处理 2038 年之后日期的支持。应用程序开发者应审计其库和数据库中的 32 位时间戳依赖,并在截止日期到来之前尽早规划迁移。
这篇文章对您有帮助吗?