javascript - 为什么 JavaScript 可以处理超过 2038 年的时间戳?

标签 javascript php year2038

我们知道,所有使用 Javascript 日期构造函数的日期都是从 1970 年 1 月 1 日 00:00:00 世界标准时间 (UTC) 开始以毫秒为单位计算的,一天包含 86,400,000 毫秒。这意味着 JS 使用 UNIX 时间戳。我将计时器设置为 2038 年之后的日期(比如 2039 年 11 月 14 日)并运行脚本:

    <script>
      var d = new Date();
      alert(d.getFullYear()+" "+d.getMonth()+" "+d.getDate());
    </script>

它成功地提醒 2039 10 14 不像 PHP 打印“1903 年 10 月 9 日 07:45:59”

JS 是如何处理的?感谢解释,因为我很困惑!

最佳答案

32bit PHP 使用32bit 整数,其最大值为2038 年可表示的最后一个UNIX 时间戳。即广为人知的Y2K38 problem。并影响几乎所有使用 UNIX 时间戳的 32 位软件。移动到 64 位或与其他时间戳表示一起工作的库(在 PHP 的情况下,DateTime 类)解决了这个问题。

Javascript 没有整数,只有 floats ,它没有固有的最大值(但反过来精度较低)。

关于javascript - 为什么 JavaScript 可以处理超过 2038 年的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980578/

相关文章:

javascript - Prototype.js unescapeHTML 适用于对象中的所有元素

javascript - 选择在移动设备上提取错误信息的按钮

php - 让分页正常工作

c++ - 如何在不使用 time_t 的情况下将 std::chrono::time_point 转换为 std::tm?

unix - 迎接2038年我们应该做什么准备?

javascript - 使用本地存储更改 CSS 背景图片

javascript - 在 Three.js 纹理中重用图像

javascript - 按 Enter 键清除文本字段

php - 实现用于登录社交网站的 webservice

c++ - time_t boost 日期转换给出不正确的结果