javascript判断日期格式

2018.8.26 javascript

可以输入20180909或2018-09-09格式的日期进行校验

var commonUtils = {};
commonUtils.isDate = function(strDate) {
	var strSeparator = "-"; // 日期分隔符   
	var strDateArray = [];
	var intYear;
	var intMonth;
	var intDay;
	var boolLeapYear;
	
	if (commonUtils.isNull(strDate)) {
		return false;
	}
	
	if (strDate.length == 10) {
		if (!/^(\d{4})-(\d{2})-(\d{2})$/.exec(strDate)) {
			return false;			
		} else {
			strDateArray = strDate.split(strSeparator);
		}
	} else if (strDate.length == 8) {
		if (!/^(\d{8})$/.exec(strDate)) {
			return false;
		} else {
			var y = strDate.substring(0, 4);
			var m = strDate.substring(4, 6);
			var d = strDate.substring(6, 8);
			strDateArray[0] = y;
			strDateArray[1] = m;
			strDateArray[2] = d;
		}
	} else {
		return false;
	}
	
	if (strDateArray.length != 3) {
		// alert('日期格式错误');
		return false;
	}

	intYear = parseInt(strDateArray[0], 10);
	intMonth = parseInt(strDateArray[1], 10);
	intDay = parseInt(strDateArray[2], 10);

	if (isNaN(intYear) || isNaN(intMonth) || isNaN(intDay)) {
		// alert('日期格式错误');
		return false;
	}

	if (intMonth > 12 || intMonth < 1) {
		// alert('日期格式错误');
		return false;
	}

	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1)) {
		// alert('日期格式错误');
		return false;
	}

	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1)) {
		// alert('日期格式错误');
		return false;
	}

	if (intMonth == 2) {
		if (intDay < 1) {
			// alert('日期格式错误');
			return false;
		}

		boolLeapYear = false;
		if ((intYear % 100) == 0) {
			if ((intYear % 400) == 0)
				boolLeapYear = true;
		} else {
			if ((intYear % 4) == 0)
				boolLeapYear = true;
		}

		if (boolLeapYear) {
			if (intDay > 29) {
				// alert('日期格式错误');
				return false;
			}
		} else {
			if (intDay > 28) {
				// alert('日期格式错误');
				return false;
			}
		}
	}

	return true;
}

commonUtils.isNull = function(str) {
		if (!str) {
			// null or undefined or NaN
			return true;
		}
		if (str.hasOwnProperty("value")) {
			if (!str.value) {
				return true;
			}
		}
		return false;
};

更新列表:

*

参考文章:

相关阅读