带有字符串的Javascript新Date()更改日期并转换为GMT当地时间

时间:2019-09-07 21:47:58

标签: javascript html date

我得到一个用于创建新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而不是错误的日期...

1 个答案:

答案 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( ) );