📌  相关文章
📜  检查日期是否有效 js - Javascript (1)

📅  最后修改于: 2023-12-03 15:26:47.488000             🧑  作者: Mango

检查日期是否有效 - Javascript

在Javascript中,我们经常需要检查用户输入的日期是否有效。为了确保程序正常运行,并避免出现不必要的错误,我们需要使用一些技巧来检查日期是否符合我们的要求。

1. 基本思路

我们可以将用户输入的日期字符串转换为JavaScript中的日期类型,再用一些方法来判断日期是否有效。下面是一个基本的代码片段:

function isValidDate(dateString) {
  var regEx = /^\d{4}-\d{2}-\d{2}$/;
  if(!dateString.match(regEx)) return false;  // Invalid format
  var d = new Date(dateString);
  var dNum = d.getTime();
  if(!dNum && dNum !== 0) return false; // NaN value, Invalid date
  return d.toISOString().slice(0,10) === dateString;
}

这个函数接受一个日期字符串作为参数,如果日期有效则返回true,否则返回false。

2. 解析代码
正则表达式

首先,我们使用正则表达式来检查用户输入的日期格式是否正确。在上面的代码中,我们使用了一个简单的正则表达式 ^\d{4}-\d{2}-\d{2}$ 来检查日期格式是否为yyyy-mm-dd。

var regEx = /^\d{4}-\d{2}-\d{2}$/;
if(!dateString.match(regEx)) return false;  // Invalid format
转换日期

接下来,我们使用new Date()方法将日期字符串转换为Date对象。如果日期无效,则getTime()方法将返回NaN,否则将返回代表该日期的时间戳。

var d = new Date(dateString);
var dNum = d.getTime();
if(!dNum && dNum !== 0) return false; // NaN value, Invalid date
日期比较

最后,我们使用toISOString()方法将日期转换为ISO格式,然后与传入的日期字符串作比较。如果两者相等,则日期有效。

return d.toISOString().slice(0,10) === dateString;
3. 测试数据

以下是一些测试数据,用于测试上面的函数是否可以正确检查日期是否有效。

| 日期字符串 | 预期结果 | | ---------- | -------- | | "1992-09-08" | true | | "2021-02-29" | false | | "01-01-2020" | false | | "2020-04-31" | false |

4. 总结

通过使用上面的代码片段,我们可以轻松地检查用户输入的日期是否有效。好的日期检查可以帮助我们避免许多不必要的错误。