今天需要做一個到計時工具,本想用Flash做的,但水平有限,還是算了,如是在網上找了些資料,拼湊著寫了個JS指令碼的,湊合著用了,呵呵。
<!--單位:秒--><br />剩餘時間:<span id="endtime">0</span><br /><script type="text/javascript"><br />var CID = "endtime";<br />if(window.CID != null)<br />{<br /> var iDate = new Date();<br /> var iCurYear = iDate.getFullYear();<br /> var iCurMonth = iDate.getMonth()+1;<br /> var iCurDay = iDate.getDate();<br /> var disNum = compareDate(iCurYear+"-"+iCurMonth+"-"+iCurDay,"2011-2-4");<br />// alert(disNum);<br />// var iTime = document.getElementById(CID).innerText;<br /> var iTime = disNum;<br /> //var iTime = disNum;<br /> var Account;<br /> RemainTime();<br />}<br />function RemainTime()<br />{<br /> var iDay,iHour,iMinute,iSecond;<br /> var sDay="",sHour="",sMinute="",sSecond="",sTime="";<br /> if (iTime >= 0)<br /> {<br /> iDay = parseInt(iTime/24/3600);<br /> if (iDay > 0)<br /> {<br /> sDay = iDay + "天";<br /> }<br /> iHour = parseInt((iTime/3600)%24);<br /> if (iHour > 0){<br /> sHour = iHour + "小時";<br /> }<br /> iMinute = parseInt((iTime/60)%60);<br /> if (iMinute > 0){<br /> sMinute = iMinute + "分鐘";<br /> }<br /> iSecond = parseInt(iTime%60);<br /> if (iSecond >= 0){<br /> sSecond = iSecond + "秒";<br /> }<br /> if ((sDay=="")&&(sHour=="")){<br /> sTime="<span style='color:darkorange'>" + sMinute+sSecond + "</font>";<br /> }<br /> else<br /> {<br /> sTime=sDay+sHour+sMinute+sSecond;<br /> }<br /> if(iTime==0){<br /> clearTimeout(Account);<br /> sTime="<span style='color:green'>時間到了!</span>";<br /> }<br /> else<br /> {<br /> Account = setTimeout("RemainTime()",1000);<br /> }<br /> iTime=iTime-1;<br /> }<br /> else<br /> {<br /> sTime="<span style='color:red'>倒計時結束!</span>";<br /> }<br /> document.getElementById(CID).innerHTML = sTime;<br />}</p><p>//判斷年份是否是閏年</p><p>function isLeapYear(year){<br /> if(year % 4 == 0 && ((year % 100 != 0) || (year % 400 == 0)))<br /> {<br /> return true;<br /> }<br /> return false;<br />}<br />//判斷前後兩個日期<br />function validatePeriod(fyear,fmonth,fday,byear,bmonth,bday){<br /> if(fyear < byear){<br /> return true;<br /> }else if(fyear == byear){<br /> if(fmonth < bmonth){<br /> return true;<br /> } else if (fmonth == bmonth){<br /> if(fday <= bday){<br /> return true;<br /> }else {<br /> return false;<br /> }<br /> } else {<br /> return false;<br /> }<br /> }else {<br /> return false;<br /> }<br />}<br />//計算兩個日期的差值<br />function compareDate(date1,date2)<br />{<br /> var nowdate = new Date();<br /> var regexp=/^(/d{1,4})[-|/.]{1}(/d{1,2})[-|/.]{1}(/d{1,2})$/;<br /> var monthDays=[0,3,0,1,0,1,0,0,1,0,0,1];<br /> regexp.test(date1);<br /> var date1Year=RegExp.$1;<br /> var date1Month=RegExp.$2;<br /> var date1Day=RegExp.$3;<br /> var date1Hour = nowdate.getHours();<br /> var date1Minute = nowdate.getMinutes();<br /> var date1Second = nowdate.getSeconds();</p><p> regexp.test(date2);<br /> var date2Year=RegExp.$1;<br /> var date2Month=RegExp.$2;<br /> var date2Day=RegExp.$3;</p><p> if(validatePeriod(date1Year,date1Month,date1Day,date2Year,date2Month,date2Day))<br /> {<br /> firstDate=new Date(date1Year,date1Month,date1Day);<br /> secondDate=new Date(date2Year,date2Month,date2Day);</p><p> result=Math.floor((secondDate.getTime()-firstDate.getTime())/(1000*3600*24));<br /> //result=Math.floor((secondDate.getTime()-firstDate.getTime()));<br /> //alert((secondDate.getTime()-firstDate.getTime()));<br /> for(j=date1Year;j<=date2Year;j++){<br /> if(isLeapYear(j)){<br /> monthDays[1]=2;<br /> }else{<br /> monthDays[1]=3;<br /> }<br /> for(i=date1Month-1;i<date2Month;i++){<br /> result=result-monthDays[i];<br /> }<br /> }<br /> result = result*24*3600 + (24-date1Hour)*3600 + (60-date1Minute)*60+(60-date1Second);<br /> return result;<br /> }else{<br /> return 'the first field must before the second date.';<br /> }<br />}<br /></script><br />