<h3> 开始结束的时间段跨度不能超过3个月或90天<h3>
<input type="text" name="btime" id="btime" value="2021-09-01" />
<input type="text" name="etime" id="etime" value="2021-12-01" />
<button type="button" onclick="cx()" >查询</button>
<script>
function cx(){
//调用方法
checkTime()
}
function checkTime(){
var begintime = document.getElementById('btime').value;//获取id
var etime = document.getElementById('etime').value;
if(!etime){
return true;
}
// 把日期转化为毫秒数
var time1 = new Date(begintime).getTime();
var time2 = new Date(etime).getTime();
if(begintime==''){//判断begintime时间是否为空
alert("开始时间不能为空");
return false;
}
if(etime==''){
alert("结束时间不能为空");
return false;
}
if(time1 > time2){//开始时间不能大于结束时间
alert("开始时间不能大于结束时间");
return false;
}
//判断时间跨度是否大于3个月
var arr1 = begintime.split('-');// split() 方法用于把一个字符串分割成字符串数组。
var arr2 = etime.split('-');
arr1[1] = parseInt(arr1[1]);//parseInt() 函数可解析一个字符串,并返回一个整数。
arr1[2] = parseInt(arr1[2]);// 不能解析返回一份NAN
arr2[1] = parseInt(arr2[1]);
arr2[2] = parseInt(arr2[2]);
var flag = true;//定义一个参数flag(布尔类型)
if(arr1[0] == arr2[0]){//同年
if(arr2[1]-arr1[1] > 3){ //月间隔超过3个月
flag = false;
}else if(arr2[1]-arr1[1] == 3){ //月相隔3个月,比较日
if(arr2[2] > arr1[2]){ //结束日期的日大于开始日期的日
flag = false;
}
}
}else{ //不同年
if(arr2[0] - arr1[0] > 1){
flag = false;
}else if(arr2[0] - arr1[0] == 1){
if(arr1[1] < 10){ //开始年的月份小于10时,不需要跨年
flag = false;
}else if(arr1[1]+3-arr2[1] < 12){ //月相隔大于3个月
flag = false;
}else if(arr1[1]+3-arr2[1] == 12){ //月相隔3个月,比较日
if(arr2[2] > arr1[2]){ //结束日期的日大于开始日期的日
flag = false;
}
}
}
}
if(!flag){
alert("时间跨度不得超过3个月!");
return false;
}
return true;
}
</script>