date.parse不起作用



在JavaScript中我尝试了此

new Date(Date.parse("2016-12-15"));

它输出一个日期对象,但日期为Wed Dec 14 19:00:00 EST 2016。为什么我期望12月15日是12月14日?

谢谢

JavaScript日期不包含时区。您要解析的日期被解释为2016年12月15日在UTC

当您将其转换回字符串时,它会使用浏览器环境中的时区,并且由于您似乎在美国东海岸,因此适当的时区为EST。

est第二天在UTC中等于午夜。

解析不是解析日期的可靠方法...

假定时区的差异

给出了" 2014年3月7日"的日期字符串,parse()假定当地时间 区域,但给定一种ISO格式,例如" 2014-03-07",它将假设 UTC时区(ES5和Ecmascript 2015)。因此日期对象 使用这些字符串产生的可能代表不同的时刻 除非系统是 设置为UTC的本地时区。这意味着两个日期字符串 看起来等效可能会导致两个不同的值,具体取决于 正在转换的字符串的格式。

- 来源 -

我认为您应该将客户端与其时区约会,并使用诸如MONK.JS之类的库正确解析日期。

您可以使用.Date.UTC()方法从特定的UTC时间创建一个日期对象,但是您必须单独传递值:

new Date(Date.UTC(year, month, day, hour, minute, second));

更好,更安全的方法是使用Moment.js

最新更新