📅  最后修改于: 2023-12-03 15:40:09.320000             🧑  作者: Mango
在前端开发中,日期验证是很常见的需求,比如判断用户输入的日期格式是否正确、两个日期之间的先后关系等等。下面介绍一些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是一个常用的日期处理库,可以用于日期格式的验证、转换、计算等等操作。可以使用其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也提供了很方便的日期比较方法,如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