使用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;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章