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

问题描述 投票:3回答:3

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

我想创建一个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小时。

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

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

javascript date timezone utc
3个回答
4
投票

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

您可以在Wiki中阅读有关数据格式和时区的更多信息


2
投票

请注意Z结束时的2016-09-26T19:17:04.731Z?它代表Zulu,意思是UTC时区(GMT + 000)。

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

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

0
投票

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

  • Date()忽略传递给它的任何参数,相当于new Date().toISOstring()
  • new Date(Optional_arguments)在JS中创建一个time类型对象,您可以在其中执行:
  • getTime()Date.prototype上列出的其他MDN Website函数
  • Date()只是本地时间的字符串表示。 new Date()给你一个可操纵的物体来摆弄。
© www.soinside.com 2019 - 2024. All rights reserved.