Javascript epoch日期不正确

时间:2015-10-16 23:07:11

标签: javascript date

我正在做一些javascript日期,我执行了以下操作:

console.log(new Date(0));

我希望看到* nix Epoch,但我奇怪地回来了:

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

发生了什么事?

2 个答案:

答案 0 :(得分:2)

您正在设置内部时间值,即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

答案 1 :(得分:0)

我无法找到解释它的任何资源,但这个'错误'是由于我的时区(据我所知)

我的时区为GMT-0500,比UTC时间晚5个小时。添加5小时到Wed Dec 31 1969 19:00:00即可获得纪元(Thurs Jan 1 1970 00:00:00