如何在javascript中验证单个日期?

时间:2017-12-04 05:48:53

标签: javascript

我的要求如下。有人可以建议如何验证下面给定的日期吗?

有效日期: 2017年1月1日 2017年1月1日 2017年1月1日 2017年1月1日

日期无效: 13/12/2017 13/13/2017 12/35/2017 13/13/2017

1 个答案:

答案 0 :(得分:1)



function validateDate(dateStr) {
   const regExp = /^(\d\d?)\/(\d\d?)\/(\d{4})$/;
   let matches = dateStr.match(regExp);
   let isValid = matches;
   let maxDate = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
   
   if (matches) {
     const month = parseInt(matches[1]);
     const date = parseInt(matches[2]);
     const year = parseInt(matches[3]);
     
     isValid = month <= 12 && month > 0;
     isValid &= date <= maxDate[month] && date > 0;
     
     const leapYear = (year % 400 == 0)
        || (year % 4 == 0 && year % 100 != 0);
     isValid &= month != 2 || leapYear || date <= 28; 
   }
   
   return isValid
}

console.log(['1/1/2017', '01/1/2017', '1/01/2017', '01/01/2017', '13/12/2017', '13/13/2017', '12/35/2017'].map(validateDate));
&#13;
&#13;
&#13;

我之前的回答不适用于Edge。