2016-11-15 71 views
0

似乎无法弄清楚,为什么这个工程moment.js不接受 “31 \ \十月2016” 作为一个日期

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()

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

这就是奇怪

+1

您的第一个片段似乎也不工作 - '30 \\ Oct'不应该映射到'11月30日'。 –

+0

查看结果,“Wed Nov”和2016年11月没有31天 –

+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" 
+0

不能改变数据源..... – molleman

+0

然后我建议你运行一个替换字符串转换\\到/什么样的数据源产生了这样一个可怕的字符串? – ADyson

+1

moment(“31 \\ Oct \\ 2 016 22:14“,”DD \\\ MMM \\\\ YYYY HH:mm“)toString()的工作原理 – molleman

相关问题