在某些日期失败的时刻

Moment failing on some dates

这是我的日期,对我来说没有任何不同。然而瞬间无法处理所有这些:

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

我怎样才能让我的约会安全。

Moment 似乎使用的是美国日期约定,尽管其中没有记录moment(string) interface

一个简单的例子是here

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

相同

所以结果完全取决于实现。但是,大多数浏览器会将 nn/nn/nn 视为具有两位数年份的美式日期,即 mm/dd/yy。但这并不能保证,并且可能会因浏览器而异。

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

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

您的日期格式字符串使用连字符 ("-") 而实际日期使用斜杠 ("/"),因此 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>