首页 > 解决方案 > 在 Javascript 中验证错误日期

问题描述

我正在按照这个例子来验证日期字符串。

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

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

下面的示例也评估为 true,即使它是一个错误的日期。我的意思是错误的日期,该日期在日历中不存在。

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

有更好的方法吗?

标签: javascriptdate

解决方案


使用momentjs

moment("02/30/2019", "MM/DD/YYYY", true).isValid(); // false
moment("03/30/2019", "MM/DD/YYYY", true).isValid(); // true

来自图书馆的当前文档:isValid momentjs

moment("not a real date").isValid(); // false

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


推荐阅读