Javascript日期解析 - 为什么?

zle*_*eek 2 javascript date date-parsing

我在javascript中遇到日期解析问题.

我可以有不同格式的日期,所以我需要有通用解析器.我使用Date.parse(),但有人可以解释为什么会发生这种情况:

Date.parse("1/07/2018");
1515279600000
Run Code Online (Sandbox Code Playgroud)

Date.parse("26/07/2018");
NaN
Run Code Online (Sandbox Code Playgroud)

今天是7月26日,为什么它有南??

T.J*_*der 5

既不这些格式必然受到支持的Date对象.它需要支持的唯一格式是规范描述的ISO-8601变体.

使用多参数构造函数(注意:6 = 7月,月份从0开始):

// To get a Date instance
new Date(2018, 6, 26);           // Local time
new Date(Date.UTC(2018, 6, 26)); // UTC

// To get the milliseconds-since-the-Epoch value
new Date(2018, 6, 26).getTime(); // Local
Date.UTC(2018, 6, 26);           // UTC
Run Code Online (Sandbox Code Playgroud)

大多数(所有?)JavaScript引擎也会在表单中接受美式日期(即使在非美国语言环境中)mm/dd/yyyy,但您无法确定它是否会在本地时间或UTC中解析它.这就是为什么你的第一个例子有效(结果是,1月7日,而不是7月1日),而你的第二个例子没有("月"无效).

如果您不想自己处理解析,那么像Moment这样的库可以为您完成(以及许多其他事情).