使用JS判断日期的有效性

为了方便,这里使用的是 yyyy/MM/dd 格式的日期。

一般策略:

将年月日分别取出,根据是否闰年和每月的日期进行判断。

function judgeDate(date){
	const rmons = [31,29,31,30,31,30,31,31,30,31,30,31],
		  pmons = [31,28,31,30,31,30,31,31,30,31,30,31];
	var year = parseInt(date.substr(0,4)),
		mon = parseInt(date.substr(5,7)),
		day = parseInt(date.substr(8,10));
	if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
		return mon > 0 && mon <=12 && day > 0 && day <= rmons[mon-1];
	}else{
		return mon > 0 && mon <=12 && day > 0 && day <= pmons[mon-1];
	}

}

使用JS内置对象Date进行判断:

将输入的字符串直接转化为Date对象,并根据是否转化后的对象是否有效及重新拼接后是否和原来相同判断有效性。

function judgeDate(date){
	var pDate = new Date(date);
	if(isNaN(pDate.getTime())){
		return false;
	}
	var year = pDate.getFullYear(),
		mon = /(\d+)/.test(pDate.getMonth()+1+"")&&RegExp.$1.length <= 1?"0"+RegExp.$1:RegExp.$1,
		day = /(\d+)/.test(pDate.getDate()+"")&&RegExp.$1.length <= 1?"0"+RegExp.$1:RegExp.$1;
	return date == year + "/" + mon + "/" + day;

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值