new Date()在不同环境中的行为不同,为什么?

时间:2019-02-15 02:00:09

标签: javascript node.js date

当我在Chrome中定义相同的日期时,它会显示预期的结果。 但是当我在node.js中运行它时,代码如下:

var date = new Date(2015, 1, 1);
console.log(date); // it displays: 2015-01-31T16:00:00.000Z

我的问题是为什么不2015-02-01

2 个答案:

答案 0 :(得分:4)

是时区问题。 在Chrome中,打印日期和时间是根据您当地的时区信息进行调整的。但是在您打印的Node.js中的日期,它的字符串格式是ISO字符串,没有调整时区值。

因此,The time and space complexity of the sort cannot be guaranteed as it is implementation dependent. function reverse(a[0..n - 1]) allocate b[0..n - 1] for i from 0 to n - 1 b[n − 1 − i] := a[i] return b function reverse_in_place(a[0..n-1]) for i from 0 to floor((n-2)/2) tmp := a[i] a[i] := a[n − 1 − i] a[n − 1 − i] := tmp 在Chrome和Node.js中具有相同的值。

尝试new Date(2015, 1, 1)。您将获得2015-2-1。

答案 1 :(得分:0)

您只是打印日期对象

var date = new Date(2015, 1, 1)
console.log(date); 

有关更深入的说明,请检查:

https://www.w3schools.com/js/js_date_formats.asp

此外,如果您的目标是使用这种格式 2015-02-01 ,请选中https://momentjs.com/。对于您的情况:

(使用moment.js)

moment(new Date(2015, 1, 1)).format('YYYY-MM-DD') // "2015-02-01"