JavaScript 纪元日期不正确

标签 javascript date

我正在做一些 javascript 日期的事情,并且执行了以下操作:

console.log(new Date(0));

我本来希望看到 *nix Epoch,但奇怪的是我被返回了:

Wed Dec 31 1969 19:00:00 GMT-0500 (Eastern Standard Time)

发生了什么?

最佳答案

您正在设置内部时间值(UTC),但看到一个基于您的系统设置的字符串,该字符串的偏移量可能为 UTC-05:00。

ECMAScript 规范解释了 Date 构造函数和实例的工作原理。鉴于:

new Date(0)

使用一个参数 ( §20.3.2.2 Date(value) ) 调用 Date 构造函数,因此它会创建一个 Date 实例,并根据参数类型设置其内部时间值。由于该值为数字,因此时间值设置为该数字。

时间值是自 1970-01-01T00:00:00Z §20.3.1.1 Time Values and Time Range 的偏移量(以毫秒为单位) 。请注意,它基于 UTC。

console.log 的行为完全依赖于实现,因此您可以从中得到:

console.log(dateInstance);

取决于主机。然而,大多数似乎调用对象的 toString 方法,该方法根据主机系统的时区设置返回依赖于实现的字符串( §20.3.4.41 Date.prototype.toString() )。即“本地”时间。

时区偏移量可以使用 getTimezoneOffset 确定。它以分钟为单位,与 ISO 8601 偏移量的含义相反(例如 UTC-05:00 将是 +300)。如果要获取表示不带偏移量的内部时间值的日期字符串,请使用 toUTCString .

关于JavaScript 纪元日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180844/

相关文章:

php - native 表单提交后的 ajax $.post 函数

JavaScript 代码不起作用

javascript - jQuery 代码与其他代码发生冲突

sql - 将 Hive datediff() 转换为月份

flutter - 在 Dart 中添加/减去迄今为止的月/年?

javascript - responseJson比较总是输入错误if

javascript - 使用 jQuery animate 时看不到动画

excel - 在 Excel 中格式化公式的 VBA 数字

java - 本地日期仅获取周日期Java

jquery 日期选择器获取 dd/mm/yy 中的日期字符串