我得到一个用于创建新Date().
let date_str = '2019-09-08';
let date = new Date(date_str);
console.log(date);
打印后,似乎没有将日期转换为2019-09-08T00:00:00.000Z
,而是似乎将日期转换为我的时区,并且控制台打印了Sat Sep 07 2019 20:00:00 GMT-0400
,这实际上更改了日期以及所需的功能。
是什么原因造成的,我该如何解决?
注意:在本文中,我尝试将上述代码作为代码段运行,但是得到了2019-09-08T00:00:00.000Z
而不是错误的日期...
答案 0 :(得分:2)
那是正确的日期,当您将其转换为字符串时,它只会显示在您当地的时区中。日期对象在内部仅存储以毫秒为单位的Unix时间戳。它们不存储任何时区信息。时区仅在转换为字符串或从字符串转换时很重要。这两个值是相同的:
console.log( new Date( '2019-09-08' ).getTime( ) );
console.log( new Date( '2019-09-07T20:00:00.000-04:00' ).getTime( ) );
如果要将日期对象显示为UTC ISO字符串,请使用Date#toISOString:
console.log( new Date( '2019-09-08' ).toISOString( ) );
console.log( new Date( '2019-09-07T20:00:00.000-04:00' ).toISOString( ) );