用Java验证错误日期

The*_*One 7 javascript date

我正在按照示例验证日期字符串。

虽然下面的示例评估为true。

var date = new Date('12/21/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)

这个下面的例子即使是一个不好的日期也算为true。

var date = new Date('02/31/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

Ram*_*usa 6

使用moment.js

moment("02/30/2019", "MM/DD/YYYY", true).isValid(); // false
moment("03/30/2019", "MM/DD/YYYY", true).isValid(); // true
Run Code Online (Sandbox Code Playgroud)

从库的当前文档在这里:isValid momentjs

moment("not a real date").isValid(); // false
Run Code Online (Sandbox Code Playgroud)

您仍然可以通过拆分字符串并评估每个部分来编写自己的解决方案。这种方法的问题在于,不仅2月不是31天,还有其他几个月也只有30天。因此开发“非越野车”解决方案将需要一些时间。