我需要验证日期是否采用这种格式(yyyy-mm)
并确保它在今天之前
我的问题是为什么当我使用此构造函数时会提前一个月?
new Date(year, month, day, hours, minutes, seconds, milliseconds)
这是执行此任务的最佳方法吗? 谢谢!
function testDate(dateString){
dateString = dateString.trim();
var regEx = /^\d{4}-([0][1-9]|[1][0-2])$/ ;
if(dateString.match(regEx) !== null){
var spArr = dateString.split('-');
var year = parseInt(spArr[0], 10);
var month =parseInt(spArr[1], 10);
var currentDate = new Date();
inputDate = new Date(year, month, 1, 12, 30, 0, 0);
alert('year: ' + year + ' month: ' + month);
alert(inputDate);
if(inputDate > currentDate){
alert('Input date ['+dateString+'] is greater than the current date!');
}
alert('all ok!');
}else{
alert('Input date ['+dateString+'] is of invalid format, correct format: yyyy-MM example: 1975-09');
}
}
testDate('2014-04 ');
testDate('14-04');
testDate('2014-4');
答案 0 :(得分:2)
无需重新发明轮子。 Date
构造函数已经为您处理了。
const testDate = str => {
if (/^\d{4}-([0][1-9]|[1][0-2])$/.test(str)===null) return false;
let now = new Date();
try {
return new Date(str)<new Date();
} catch(err) {
console.log(err);
return false;
}
}
console.log(testDate('2014-04 '));
console.log(testDate('14-04'));
console.log(testDate('2014-04'));