js判断两个日期之差是否在指定时间段内有三种方法
(1)方法一
通过操作年月日时分秒判断两者时间差
参考文章:http://blog.csdn.net/piggachen/article/details/69943318
//比较两个时间 time1,time2均为日期类型
//判断两个时间段是否相差 m 个月
function completeDate(time1 , time2 , m)
{
var diffyear = time2.getFullYear() - time1.getFullYear() ;
var diffmonth = diffyear * 12 + time2.getMonth() - time1.getMonth() ;
if(diffmonth < 0 ){
return false ;
}
var diffDay = time2.getDate() - time1.getDate() ;
if(diffmonth < m || (diffmonth == m && diffDay <= 0)){
if(diffmonth == m && diffDay == 0){
var timeA = time1.getHours()*3600+60*time1.getMinutes()+time1.getSeconds();
var timeB = time2.getHours()*3600+60*time2.getMinutes()+time2.getSeconds();
if(timeB-timeA > 0){
return false;
}
}
return true ;
}
return false ;
}
//根据年份获取某月份有几天
function getNum(year, month) {
var temp;
month = parseInt(month, 10);
temp = new Date(year, month, 0);
return temp.getDate();
};
(2)方法二
通过getTime获取时间戳,计算两者相差的毫秒数,再转换为对应的单位
实例:
//获取时间戳
var startTimestamp = new Date(startTime).getTime();
var endTimestamp = new Date(endTime).getTime();
if(startTimestamp > endTimestamp){
alert("起始日期应在结束日期之前");
return;
}
if((endTimestamp-startTimestamp)>7*24*60*60*1000){
alert("时间段最长为一周");
return;
}
(3)方法三
先根据结束日期和极限时间段计算最小开始时间,然后与实际选择开始时间对比,确保实际选择的开始时间不早于最小开始时间
//开始时间和结束时间不能超过三个月
var g_startTime = new Date(startTime).getTime();
var startTimeLimit = new Date(endTime);
startTimeLimit.setMonth(startTimeLimit.getMonth()-3);
if(g_startTime < startTimeLimit.getTime()){
alert("查询时间范围不得超过三个月");
return;
}