📜  typescript 如何检查字符串是否为日期 - TypeScript (1)

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

检查字符串是否为日期

在 TypeScript 中,检查字符串是否为日期需要使用正则表达式和内置的 Date 类。

正则表达式

我们可以通过正则表达式来验证字符串是否符合日期格式。以下是一个简单但不全面的正则表达式:

const dateRegex = /^\d{4}-\d{2}-\d{2}$/;

这个正则表达式验证字符串是否有形如 YYYY-MM-DD 的格式,其中 YYYY 是 4 位数字的年份,MM 是 2 位数字的月份,DD 是 2 位数字的日份。

检查字符串是否为日期
function isDate(str: string): boolean {
  const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
  if (!dateRegex.test(str)) { // 如果字符串不符合日期格式
    return false;
  }
  const date = new Date(str); // 使用 Date 构造函数创建日期对象
  return date.getFullYear() > 0; // 如果年份大于 0,则说明输入的是正确的日期
}

上述代码片段中,isDate 函数接受一个字符串参数 str,并返回一个布尔值,表示字符串是否为日期。我们首先验证字符串是否符合正则表达式,如果不是,函数会直接返回 false。如果字符串符合日期格式,则使用 Date 构造函数创建日期对象。最后,我们检查日期对象的年份是否大于 0,如果是,则说明输入的是正确的日期,否则说明输入的是无效的日期。

示例
console.log(isDate("2022-06-12")); // true
console.log(isDate("2022-6-12")); // false
console.log(isDate("2022-06-31")); // false
console.log(isDate("2022-06-00")); // false
console.log(isDate("2022-00-01")); // false
console.log(isDate("2022-13-01")); // false
console.log(isDate("not a date")); // false

在 TypeScript 中,检查字符串是否为日期需要使用正则表达式和内置的 Date 类。我们可以通过正则表达式验证字符串是否符合日期格式,然后使用 Date 构造函数创建日期对象。最后,我们检查日期对象的年份是否大于 0,以确定输入的是否为正确的日期。