随着互联网的发展,越来越多的网站或应用需要涉及到日期的计算或验证。而在javascript中,判断日期是否合理是一个常见的问题。那么,如何判断日期是否合理呢?接下来,我们一起来探讨一下。
一、日期格式
在判断日期是否合理之前,首先需要确认输入的日期格式是否正确,常见的日期格式有以下三种:
- yyyy/MM/dd
- yyyy-MM-dd
- yyyy年MM月dd日
其中,yyyy表示年份,MM表示月份,dd表示日。
其中,前两种日期格式比较常见,也是在开发中最常见的日期格式。
立即学习“Java免费学习笔记(深入)”;
二、闰年判断
在判断日期是否合理时,首先需要判断年份是否为闰年。
闰年的定义:公历年份为4的倍数的,且不是100的倍数,是闰年;公历年份是400的倍数是,也是闰年。例如:2000年是闰年,1900年不是闰年。
在JavaScript中,判断闰年的代码如下:
function isLeapYear(year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}三、日期校验
有了闰年判断的基础,接下来就可以进行日期的校验了。具体来说,对于一个日期字符串,可以按照以下方式进行校验:
- 使用正则表达式检验日期格式是否符合规范
- 将年、月、日分别提取出来
- 对月份进行校验,月份应该在1-12之间
- 对日进行校验,日的范围应该在1-31之间,但根据不同的月份和闰年情况,日的范围可能会有所不同
以下是具体的步骤和代码实现:
正则表达式校验格式
function checkDate(dateStr) {
var reg = /^(\d{4})(\/|-|\u5e74)(\d{1,2})(\/|-|\u6708)(\d{1,2})/;
return reg.test(dateStr);
}年、月、日提取
function getDateInfo(dateStr) {
var dateArr;
if (dateStr.indexOf('/') != -1) {
dateArr = dateStr.split('/');
} else if (dateStr.indexOf('-') != -1) {
dateArr = dateStr.split('-');
} else {
dateArr = dateStr.split('\u5e74');
dateArr[1] = dateArr[1].replace('\u6708', '');
dateArr[2] = dateArr[2].replace('\u65e5', '');
}
return {
year: parseInt(dateArr[0]),
month: parseInt(dateArr[1]),
day: parseInt(dateArr[2])
}
}月校验
function checkMonth(month) {
return month >= 1 && month <= 12;
}日校验
function checkDay(year, month, day) {
var maxDay;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
maxDay = 31;
break;
case 4:
case 6:
case 9:
case 11:
maxDay = 30;
break;
case 2:
if (isLeapYear(year)) {
maxDay = 29;
} else {
maxDay = 28;
}
break;
default:
return false;
}
return day >= 1 && day <= maxDay;
}四、总结
通过对日期格式、闰年和日期校验的讲解,相信大家已经能够学会如何判断日期是否合理。当然,实现起来可能也会有一定的难度,需要大家在实践中多多练习。希望这篇文章对大家有所帮助,感谢阅读。











