在某些日期失败的时刻

时间:2015-08-06 22:36:24

标签: javascript node.js date momentjs

这是我的日期,对我来说没有什么不同。然而,时刻无法处理所有这些:

console.info(details.date);
console.info(moment(details.date).format());
console.info('________________________________________');
result.date = moment(details.date, "DD-MM-YYYY H:m").format();

//Console
________________________________________
16/10/10 15:00
Invalid date
________________________________________
09/10/10 15:00
2010-09-10T15:00:00+01:00

如何安全保存日期。

3 个答案:

答案 0 :(得分:1)

看来Moment正在使用American Date约定,尽管它没有在moment(string) interface中记录。

一个简单的例子是here

答案 1 :(得分:1)

根据moment(string)的文档,如果在解析字符串时未提供格式,它将首先尝试匹配ECMA-262中指定的ISO 8601格式之一。如果不这样做,它只会将字符串传递给new Date(string),这与使用 Date.parse 相同。

因此结果完全取决于实现。但是,大多数浏览器会将nn / nn / nn视为具有两位数年份的美式日期,即mm / dd / yy。但这并不能保证,可能会在浏览器之间发生变化。

解决方法是在解析字符串时始终传递格式。

在第二个示例中,指定的格式与提供的字符串不匹配。在这种情况下,它似乎又回落到 Date.parse

答案 2 :(得分:0)

您的日期格式字符串使用hyphons(“ - ”)而实际日期使用斜杠(“/”),因此Moment.Js无法解析它。在以下示例中正常工作

$("body").text(moment("16/10/10 15:00", "DD/MM/YY H:m").format())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.js"></script>