网站地图    收藏   

主页 > 前端 > javascript >

计算两个日期相差的天数js代码

来源:自学PHP网    时间:2014-09-19 14:48 作者: 阅读:

[导读] js日期相差天数我们一般是利用年月日进行相加减就可以算出来了,当然也可以把日期转换成日毫秒然后再进行加减再进行转换,下面我们来看一些实例。...

一:计算两个日期相差的天数

 代码如下 复制代码


var s = ((new Date(paramObj.end_date.replace(/-/g,"/"))) - (new Date(paramObj.start_date.replace(/-/g,"/"))));
var day = s/1000/60/60/24


例2

js 里面居然可以直接 Date1-Date2,而且还是转换为毫秒计算时间差的。

 代码如下 复制代码


// 计算两个日期的间隔天数 
function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式  
var aDate, oDate1, oDate2, iDays  
aDate = sDate1.split("-")  
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) //转换为12-18-2002格式  
aDate = sDate2.split("-")  
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])  
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24) //把相差的毫秒数转换为天数  
return iDays  
}

二:计算一定天数后的日期

在JavaScript中,计算当天日期后的几天是什么日期。远远没有在.Net中来的方便,一个函数就可以解决问题。就这个问题,把我困扰了一段时间,最终通过一个网友的介绍才把问题给解决掉。贴出来一起分享一下。

 代码如下 复制代码


<script  language="javascript"  type="text/javascript"> 
var  startDate  =  new  Date  ();           var  intValue  =  0; 
var  endDate  =  null; 
 
intValue  =  startDate.getTime();            intValue  +=  100  *  (24  *  3600  *  1000); 
endDate  =  new  Date  (intValue); 
alert  (endDate.getFullYear()+"-"+ (endDate.getMonth()+1)+"-"+ endDate.getDate()); 
</script> 

上面的100代表100天后的日期,你可以修改。JS中Date.getTime(),只能1970.01.01之后的日期;还有月份是0 - 11,有点不一样,切忌哦。当然你也可以计算特定日期后的日期。

 代码如下 复制代码


<script  language="javascript"  type="text/javascript"> 
var  startDate  =  new  Date  (2007,  (8-1),  1,  10,  10,  10);
var  intValue  =  0; 
var  endDate  =  null; 
 
intValue  =  startDate.getTime();            intValue  +=  100  *  (24  *  3600  *  1000);
endDate  =  new  Date  (intValue); 
alert  (endDate.getFullYear()+"-"+ (endDate.getMonth()+1)+"-"+ endDate.getDate()); 
</script> 

上面如果都没有计算闰年的,下面这个实例比较完事

 代码如下 复制代码


//判断是否为闰年
function isLeapYear(year){
if(year % 4 == 0 && ((year % 100 != 0) || (year % 400 == 0)))
{
     return true;
}
return false;
}
//判断前后两个日期
function validatePeriod(fyear,fmonth,fday,byear,bmonth,bday){
if(fyear < byear){
return true;
}else if(fyear == byear){
if(fmonth < bmonth){
   return true;
} else if (fmonth == bmonth){
   if(fday <= bday){
    return true;
   }else {
    return false;
   }
} else {
   return false;
}
}else {
return false;
}
}
//计算两个日期的差值
function dateDiff(d1,d2){
    var disNum=compareDate(d1,d2);
    return disNum;
}
function compareDate(date1,date2)
{
    var regexp=/^(d{1,4})[-|.]{1}(d{1,2})[-|.]{1}(d{1,2})$/;
    var monthDays=[0,3,0,1,0,1,0,0,1,0,0,1];
    regexp.test(date1);
    var date1Year=RegExp.$1;
    var date1Month=RegExp.$2;
    var date1Day=RegExp.$3;
    regexp.test(date2);
    var date2Year=RegExp.$1;
    var date2Month=RegExp.$2;
    var date2Day=RegExp.$3;
if(validatePeriod(date1Year,date1Month,date1Day,date2Year,date2Month,date2Day)){
firstDate=new Date(date1Year,date1Month,date1Day);
     secondDate=new Date(date2Year,date2Month,date2Day);
     result=Math.floor((secondDate.getTime()-firstDate.getTime())/(1000*3600*24));
     for(j=date1Year;j<=date2Year;j++){
  if(isLeapYear(j)){
      monthDays[1]=2;
  }else{
      monthDays[1]=3;
  }
  for(i=date1Month-1;i<date2Month;i++){
      result=result-monthDays[i];
  }
     }
     return result;
}else{
    alert('对不起第一个时间必须小于第二个时间,谢谢!');
    exit;
}
}

调用该函数传递两个时间值:2013-01-19   2013-12-19

days = dateDiff(d1,d2);

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论