为什么时间戳限制为 2038?

新手上路,请多包涵

我刚刚发现,运行一个日历脚本,PHP 中的时间戳限制为 2038。这到底是什么意思?为什么是 2038 而不是 2050 或 2039?如果时间戳仅从给定日期(1970 年)开始计算秒数,为什么要限制?

原文由 Shoe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 491
2 个回答

该限制由大多数 C 库用于表示该计数的 4 字节带符号整数强加。速算(假设一年 365 天,不完全正确):

 2147483648 seconds ~ 68.1 years

这也意味着下限约为 1900。一些图书馆已经开始引入 64 位纪元计数,但目前还很少。

原文由 Matthew Scharley 发布,翻译遵循 CC BY-SA 3.0 许可协议

带符号的 32 位整数的最大值为 2,147,483,647。如果你加上 +1,你会得到 -2,147,483,647。从 01-01-1970 00:00:00 开始的 2,147,483,647 秒是 2038 年 1 月 19 日。如果再增加一秒,就会得到 1902 年某处的日期。

原文由 Sander Marechal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏