新的Date()在不同的环境中表现不同,为什么?

问题描述 投票:0回答:2

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

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

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

javascript node.js date
2个回答
4
投票

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

因此,两个new Date(2015, 1, 1)在Chrome和Node.js中具有相同的值。

试试console.log(date.toLocaleDateString())。你会得到2015-2-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"
© www.soinside.com 2019 - 2024. All rights reserved.