我已经看过这个问题的各种版本,但没有一个能回答我的问题。
我想创建一个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小时。
我的系统日期是正确的。 我运行这个不同的机器,我得到相同的结果。
有人可以解释为什么我会及时出现差异吗?
答案 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()
给你一个可操纵的物体来摆弄。