【问题标题】:JS Date YYYY-MM-DD Returning incorrect value [duplicate]JS日期YYYY-MM-DD返回不正确的值[重复]
【发布时间】:2020-06-25 14:47:09
【问题描述】:

我有 HTML Date 输入,它返回格式为“YYYY-MM-DD”的字符串

然后我想把它放入 Date 构造函数中,以便我可以将其转换为 ISOFormat(用于 Mongo 查询)

但是,结果出乎意料。 执行new Date('2020-06-25') 将返回“2020 年 6 月 24 日星期三 20:00:00 GMT-0400(东部夏令时间)”。请注意,这是前一天。为什么会发生这种情况,我怎样才能改变它以获得当前日期?谢谢

【问题讨论】:

  • 'YYYY-MM-DD' ISO 8601 格式。如果您想要完全限定,请附加“T00:00:00Z”。

标签: javascript date iso


【解决方案1】:

当您在 JavaScript 中创建一个新的 Date 对象时,它期望参数为 GMT 格式。然后它将其转换为您当地的时区GMT-0400,这就解释了为什么它要休息 4 小时。您可以通过将时区附加到日期字符串来设置时区:new Date('2020-06-25 GMT-0400') 应该给您“Thu Jun 25 2020 00:00:00 GMT-0400”。

【讨论】:

  • "... 它期望参数在 GMT" 不正确。 yyyy-mm-dd 格式的日期被解析为 UTC,但其他日期格式则不是。 “2020-06-25 GMT-0400”不是 ECMA-262 支持的格式,因此解析取决于实现。 new Date('2020-06-25 GMT-0400') 在 Safari 和 Firefox 中生成无效日期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多