📜  日期验证 - Javascript (1)

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

日期验证 - Javascript

在前端开发中,日期验证是很常见的需求,比如判断用户输入的日期格式是否正确、两个日期之间的先后关系等等。下面介绍一些Javascript的日期验证方法。

日期格式验证
方法一:正则表达式

可以使用正则表达式来判断日期格式是否正确。以下是一个简单的正则表达式:

/^\d{4}-\d{1,2}-\d{1,2}$/

该正则表达式可以验证形如"2022-12-31"的日期格式。如果需要验证其他格式,可以自行修改正则表达式。

示例代码:

function isValidDate(dateStr) {
  var regex = /^\d{4}-\d{1,2}-\d{1,2}$/;
  return regex.test(dateStr);
}

console.log(isValidDate('2022-12-31')); // true
console.log(isValidDate('2022-1-31')); // true
console.log(isValidDate('2022-01-31')); // true
console.log(isValidDate('2022/01/31')); // false
方法二:moment.js

moment.js是一个常用的日期处理库,可以用于日期格式的验证、转换、计算等等操作。可以使用其isValid()方法来判断日期格式是否正确。

示例代码:

var dateStr = '2022-12-31';
var dateFormat = 'YYYY-MM-DD';

console.log(moment(dateStr, dateFormat, true).isValid()); // true
console.log(moment('2022-1-31', 'YYYY-MM-DD', true).isValid()); // true
console.log(moment('2022-01-31', 'YYYY-MM-DD', true).isValid()); // true
console.log(moment('2022/01/31', 'YYYY-MM-DD', true).isValid()); // false
日期先后关系验证
方法一:比较时间戳

可以将日期转换为时间戳,然后比较时间戳的大小来判断日期先后关系。

示例代码:

function isDateAfter(startDateStr, endDateStr) {
  var startDate = new Date(startDateStr).getTime();
  var endDate = new Date(endDateStr).getTime();

  return startDate < endDate;
}

console.log(isDateAfter('2022-01-01', '2022-12-31')); // true
console.log(isDateAfter('2022-12-31', '2022-01-01')); // false
console.log(isDateAfter('2022-01-01', '2022-01-01')); // false
方法二:使用moment.js

moment.js也提供了很方便的日期比较方法,如isBefore()、isAfter()等。

示例代码:

console.log(moment('2022-01-01').isBefore('2022-12-31')); // true
console.log(moment('2022-12-31').isBefore('2022-01-01')); // false
console.log(moment('2022-01-01').isSame('2022-01-01')); // true