在某些日子没有时间

这是我的约会,对我来说没有什么不同。 然而时刻却无法处理它们:

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 

我怎样才能使我的date安全。

看来Moment正在使用American Date约定,尽pipe它没有logging在那个moment(string)接口中 。

这里有个简单的例子

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

所以结果完全取决于实现。 但是,大多数浏览器都会把nn / nn / nn当作两位数年份的美式date,即mm / dd / yy。 但这并不能保证,并可能从浏览器到浏览器。

解决方法是在parsingstring时始终传递格式。

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

你的date格式string使用hyphons(“ – ”),实际date使用斜杠(“/”),所以Moment.Js无法parsing它。 在下面的例子中工作正常

 $("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>