一个完整的计算日期相差天数的脚本

今天需要做一个到计时工具,本想用Flash做的,但水平有限,还是算了,如是在网上找了些资料,拼凑着写了个JS脚本的,凑合着用了,呵呵。

<!--单位:秒--> 剩余时间:<span id="endtime">0</span> <script type="text/javascript"> var CID = "endtime"; if(window.CID != null) { var iDate = new Date(); var iCurYear = iDate.getFullYear(); var iCurMonth = iDate.getMonth()+1; var iCurDay = iDate.getDate(); var disNum = compareDate(iCurYear+"-"+iCurMonth+"-"+iCurDay,"2011-2-4"); // alert(disNum); // var iTime = document.getElementById(CID).innerText; var iTime = disNum; //var iTime = disNum; var Account; RemainTime(); } function RemainTime() { var iDay,iHour,iMinute,iSecond; var sDay="",sHour="",sMinute="",sSecond="",sTime=""; if (iTime >= 0) { iDay = parseInt(iTime/24/3600); if (iDay > 0) { sDay = iDay + "天"; } iHour = parseInt((iTime/3600)%24); if (iHour > 0){ sHour = iHour + "小时"; } iMinute = parseInt((iTime/60)%60); if (iMinute > 0){ sMinute = iMinute + "分钟"; } iSecond = parseInt(iTime%60); if (iSecond >= 0){ sSecond = iSecond + "秒"; } if ((sDay=="")&&(sHour=="")){ sTime="<span style='color:darkorange'>" + sMinute+sSecond + "</font>"; } else { sTime=sDay+sHour+sMinute+sSecond; } if(iTime==0){ clearTimeout(Account); sTime="<span style='color:green'>时间到了!</span>"; } else { Account = setTimeout("RemainTime()",1000); } iTime=iTime-1; } else { sTime="<span style='color:red'>倒计时结束!</span>"; } document.getElementById(CID).innerHTML = sTime; } //判断年份是否是闰年 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 compareDate(date1,date2) { var nowdate = new Date(); 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; var date1Hour = nowdate.getHours(); var date1Minute = nowdate.getMinutes(); var date1Second = nowdate.getSeconds(); 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)); //result=Math.floor((secondDate.getTime()-firstDate.getTime())); //alert((secondDate.getTime()-firstDate.getTime())); 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]; } } result = result*24*3600 + (24-date1Hour)*3600 + (60-date1Minute)*60+(60-date1Second); return result; }else{ return 'the first field must before the second date.'; } } </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值