【问题标题】:Javascript new Date() with string changes date with conversion to GMT local time [duplicate]带有字符串的Javascript new Date()更改日期并转换为GMT本地时间[重复]
【发布时间】:2020-01-10 06:10:47
【问题描述】:

我得到一个字符串格式的日期,我用它来创建一个新的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,这基本上改变了日期和我需要的功能。

是什么原因造成的,我该如何解决?

注意:我尝试在这篇文章中将上述代码作为代码 sn-p 运行,但得到的是 2019-09-08T00:00:00.000Z 而不是错误的日期...

【问题讨论】:

  • console.log(date.toUTCString()) — 默认情况下,将日期显示为字符串总是本地时间。

标签: javascript html date


【解决方案1】:

这是正确的日期,当您将其转换为字符串时,它只会显示在您当地的时区中。 Date 对象在内部只存储一个以毫秒为单位的 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( ) );

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2013-01-02
    • 2020-04-24
    • 1970-01-01
    • 2014-02-23
    • 2011-10-07
    • 2016-10-25
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多