JS 验证日期是否合法(平年闰年)

 从前端拼接的日期字符串,传到后台后由于平年闰年每个月的最后一天日期会不一样,这里需要判断一下拼接的日期字符串是否合法...

//验证日期是否合法
export function validateDate(inputDateValue) {
  var index = inputDateValue.indexOf('-');
  var year = 0;
  var month = 0;
  var day = 0;
  if(index > -1) {
     var lastIndex = inputDateValue.lastIndexOf('-');
     //只能是YYYY-M-DD或者YYYY-MM-DD的形式
     if(lastIndex - index < 1 || lastIndex - index > 3) {
         return false;
     }
     var arrDate = inputDateValue.split('-');
         year = arrDate[0];
         month = arrDate[1];
         day = arrDate[2];
     } else {
         year = inputDateValue.substring(0,4);
         month = inputDateValue.substring(4,6);
         day = inputDateValue.substring(6,8);
     }
     if(Number(month) > 12 || Number(day) > 31 ||Number(month)<1
                         || Number(day)<1 ||  year.length != 4) {
         return false;
  } else  if(day > getLastDayOfMonth(Number(year),Number(month))) {
         return false;
  }
  return true;
}
//判断输入的内容将‘-’替换成为数字1后,是否全部为数字
function checkNumeric(inputDateValue) {
  var replacedValue = inputDateValue.replace(/-/g,'1');
  return isNumeric(replacedValue);
}
//判断是否为数字
function isNumeric(strValue) {
  var result = regExpTest(strValue,/\d*[.]?\d*/g);
  return result;
}
function regExpTest(source,re) {
  var result = false;
  if(source==null || source=="") {
    return false;
  }
  if(source==re.exec(source)) {
    result = true;
  }
  return result;
}
//获得一个月中的最后一天
function getLastDayOfMonth(year,month){
  var days=0;
  switch(month){
  case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;
  case 4: case 6: case 9: case 11: days=30;break;
  case 2: if(isLeapYear(year)) days=29;else days=28;break;
  }
  return days;
}
//判断是否为闰年
function isLeapYear(year){
  if((year %4==0 && year %100!=0) || (year %400==0)) return true;
  else return false;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值