Javascript js中的字符串到日期转换器问题

Javascript js中的字符串到日期转换器问题,javascript,Javascript,我的本地机器在东部时区 我试图将日期字符串转换为js中的日期对象,但从日期对象中的日期字符串中得到一天之前的日期 新日期('2020-04-03')为此,我得到了周四2020年4月2日20:00:00 GMT-0400(东部夏令时)此输出 新日期('2020/04/03')为此,我得到了2020年4月3日星期五00:00:00 GMT-0400(东部夏令时)此输出 console.log(新日期('2020-04-03')) console.log(新日期('2020/04/03'))尝试新日

我的本地机器在东部时区

我试图将日期字符串转换为js中的日期对象,但从日期对象中的日期字符串中得到一天之前的日期

新日期('2020-04-03')
为此,我得到了
周四2020年4月2日20:00:00 GMT-0400(东部夏令时)
此输出

新日期('2020/04/03')
为此,我得到了
2020年4月3日星期五00:00:00 GMT-0400(东部夏令时)
此输出

console.log(新日期('2020-04-03'))

console.log(新日期('2020/04/03'))
尝试
新日期('2020-04-03 00:00:00')
默认情况下,在UTC时区解析日期字符串。输出日期时,默认情况下,它会将其转换为浏览器设置的本地时区

要解决这个问题,您可以输入与UTC等效的日期,或者只需按照其他人在此处所述的操作,并在日期字符串中包含时区

let date = new Date('2020-04-03 EST');

这两个日期分割给您带来不同结果的原因是因为它触发了两种不同的日期处理模式

在一种情况下,
2020-04-03
,它将日期视为格式的简化版本,如果未指定时区,JavaScript将在UTC时区中创建日期

第二个日期,
2020/04/03
,不是官方支持的格式,因此JavaScript会退回到特定于实现的日期解析,因此它甚至可能在不同浏览器之间不一致。在这种情况下,它选择使用您的本地时区

详细说明了日期解析在JavaScript标准中的工作原理,以及在某些情况下浏览器之间如何存在非标准行为


简言之,尽可能坚持ISO 8601日期是一个好主意,这不仅是因为JavaScript以一致的方式处理它们,而且它们也很容易排序,并且在许多编程系统中都得到广泛支持。

谢谢,这很好。你能解释一下新日期('2020/04/03')和新日期('2020-04-03 00:00:00:00)之间的区别吗