JavaScript - Date(),new Date()和ISODate之间的区别

时间:2016-09-26 19:26:38

标签: javascript date timezone utc

我已经看过这个问题的各种版本,但没有一个能回答我的问题。

我想创建一个ISODate。对于MongoDB。我正在使用Node.js

在Node中,当我这样做时:

console.log(Date());

我明白了:

  

2016年9月26日星期一15:17:04 GMT-0400(美国东部时间)< - 这是正确的。

当我这样做时:

console.log(new Date());

我明白了:

  

2016-09-26T19:17:04.731Z < - 提前4小时

我对ISODATE方式的理解是:

var isodate = new Date().toISOString()
console.log(isolate);

比“现在”提前4小时。

我的系统日期是正确的。 我运行这个不同的机器,我得到相同的结果。

有人可以解释为什么我会及时出现差异吗?

3 个答案:

答案 0 :(得分:4)

不同之处在于2016-09-26T19:17:04.731Z与GMT0时区相关,Mon Sep 26 2016 15:17:04 GMT-0400 (EDT)与您当地时区相关。两者都指向同一时间:)

您可以在Wiki

中详细了解数据格式和时区

答案 1 :(得分:2)

请注意Z末尾的2016-09-26T19:17:04.731Z? 它代表祖鲁语,意思是UTC时区(GMT + 000)。

正如您在原始日期字符串中看到的那样,Mon Sep 26 2016 15:17:04 GMT-0400 (EDT)有一个GMT-0400时区,我想这是您居住的当地时间。 所以,事实上没有问题,只是同一时期的不同表现形式:

  • Date()创建了本地日期
  • new Date()创建UTC日期

答案 2 :(得分:0)

Date()new Date()之间差异的基本定义  是:

  • Date()忽略传递给它的任何参数,相当于new Date().toISOstring()

  • new Date(Optional_arguments)在JS中创建一个time类型的对象,您可以在其中执行:

  • getTime() MDN Website

  • 上列出的其他Date.prototype个功能
  • Date()只是当地时间的字符串表示。

    • new Date()给你一个可操纵的物体来摆弄。