moment.js不接受“31 \\ Oct \\ 2016”作为约会

时间:2016-11-15 15:07:40

标签: javascript date momentjs

似乎无法理解为什么会这样做

moment("30\\Nov\\2016 22:14","DD\\MM\\YYYY HH:mm").toString()

(结果为"Wed Nov 30 2016 22:14:00 GMT+0000"

这不起作用

moment("31\\Oct\\2016 22:14","DD\\MM\\YYYY HH:mm").toString()

(结果为"Invalid date")。

有人知道为什么会这样吗?

编辑

更改了上面的日期

编辑2

尝试了此代码段

moment("30\\Jan\\2016 22:14","DD\\MMM\\YYYY HH:mm").toString()

result = "Wed Nov 30 2016 22:14:00 GMT+0000"

那很奇怪

1 个答案:

答案 0 :(得分:1)

这里有几个问题:

首先,在某些情况下,使用反斜杠的日期格式会导致问题(单个或双反斜杠都会导致不同的问题)。我不确定问题究竟是什么,因为第一个例子有效,但我怀疑它将它视为某种转义序列。

其次,“MM”是用于解析短月份名称的错误标记。它应该是“MMM”。在使用“MM”时,它对你的“Nov”字符串起作用似乎是巧合,但它肯定不适用于“Oct”或大多数其他字符串。

如果您可以更改数据源以使用其他分隔符提供日期(/-非常标准),那么请执行此操作。如果没有,您可能必须在将它提供给momentJS之前对日期字符串进行字符串替换。

不起作用的字符串示例(生成错误日期或报告“无效日期”):

"31\\Oct\\2016 22:14","DD\\MMM\\YYYY HH:mm"
"31\Oct\2016 22:14","DD\MMM\YYYY HH:mm"
"31/Oct/2016 22:14","DD/MM/YYYY HH:mm"

正如你所看到的,它几乎发展到了一个可解析的字符串,它看起来像:

"31/Oct/2016 22:14","DD/MMM/YYYY HH:mm"