特殊情况忽视,不要过分纠结细节。2012年10月7月0点45分开始至今已经过了:<span id="time"></span> <script type="text/javascript"> var t_begin=new Date(2012,(10-1),7,0,45,0);//指定时间 setInterval(function(){ var t_end=new Date(); //当前时间 var i_time=t_end.getTime()-t_begin.getTime(); //两时间的毫秒差 i_time=parseInt(i_time/1000);//转为共有多少秒 var y=parseInt(i_time/(60*60*24*365)); //暂定365天为一年 var i=i_time%(60*60*24*365);//2795994 var m=parseInt(i/(60*60*24*30)); //暂定30天为一月 i=i%(60*60*24*30); var d=parseInt(i/(60*60*24)); //24小时为一天 i=i%(60*60*24); var h=parseInt(i/(60*60)); //60分钟为一小时 i=i%(600*60); var M=parseInt(i/(60)); //60秒为一分钟 i=i%60; var s=i; //秒 document.getElementById("time").innerHTML=y+"年"+m+"月"+d+"日 "+h+"小时"+M+"分"+s+"秒"; },1000); </script>
距离2012建政日还剩<span id="Display"></span> <script type="text/javascript"> var ndt=new Date(2012,10,1).getTime(); var dis=document.getElementById("Display"); function countDown(){ var diff=ndt-new Date().getTime(); dis.innerHTML= parseInt(diff/1000/3600/24)+"天"+parseInt(diff/1000/3600%24)+"小时"+ parseInt(diff/1000/60%60)+"分"+parseInt(diff/1000%60)+"秒"+parseInt(diff%1000)+"毫秒"; } window.setInterval('countDown();',100); </script> ========= 距离2012建政日还剩257天3小时17分31秒148毫秒
究竟是显示1个月还是0个月:显示1个月按2月的天数来29日来算,显示0个月按3月的天数来算,3月31日0点45之前未满一个月,都说得通。
下面调用是计算当前时间是2012年10月7月0点45分后多少天。
若是换成:new Date().Diff(new Date(Date.parse('2013/10/07 00:45:00')));这样的调用方式,即可显示当前到指定日期还差多少天的倒计时效果
<script type="text/javascript">
Date.prototype.Diff=function(endTime,text){
text=text||'{d}天 {h}:{m}:{s}';
if((endTime.getTime()-this.getTime())>0){
var b=endTime.getTime()-this.getTime(),c=[],tpl=['{d}','{h}','{m}','{s}'];
c=[Math.floor(b/86400000),Math.floor(b%86400000/3600000),Math.floor(b%86400000%3600000/60000),Math.round(b%86400000%3600000%60000/1000)];
if(c[2].toString().length==1){
c[2]='0'+c[2];
};
if(c[3].toString().length==1){
c[3]='0'+c[3];
};
for(var i=0;i<c.length;i++){
text=text.replace(tpl[i],c[i]);
};
return text;
}else{return '已过期'}
};
function showtime(){
document.getElementById('showtime').innerHTML=new Date(Date.parse('2012/10/07 00:45:00')).Diff(new Date());
setTimeout(function(){
showtime()
},1000)
};
window.onload=function(){
showtime();
}
</script>
<div id="showtime"></div>
<script type="text/javascript">
var t_begin=new Date(2012,(10-1),7,0,45,0);//指定时间
setInterval(function(){
var t_end=new Date(); //当前时间
var i_time=t_end.getTime()-t_begin.getTime(); //两时间的毫秒差
i_time=parseInt(i_time/1000);//转为共有多少秒
var y=parseInt(i_time/(60*60*24*365)); //暂定365天为一年
var i=i_time%(60*60*24*365);//2795994
var m=parseInt(i/(60*60*24*30)); //暂定30天为一月
i=i%(60*60*24*30);
var d=parseInt(i/(60*60*24)); //24小时为一天
i=i%(60*60*24);
var h=parseInt(i/(60*60)); //60分钟为一小时
i=i%(600*60);
var M=parseInt(i/(60)); //60秒为一分钟
i=i%60;
var s=i; //秒
document.getElementById("time").innerHTML=y+"年"+m+"月"+d+"日 "+h+"小时"+M+"分"+s+"秒";
},1000);
</script>
<script type="text/javascript">
var ndt=new Date(2012,10,1).getTime();
var dis=document.getElementById("Display");
function countDown(){
var diff=ndt-new Date().getTime();
dis.innerHTML=
parseInt(diff/1000/3600/24)+"天"+parseInt(diff/1000/3600%24)+"小时"+
parseInt(diff/1000/60%60)+"分"+parseInt(diff/1000%60)+"秒"+parseInt(diff%1000)+"毫秒";
}
window.setInterval('countDown();',100);
</script>
=========
距离2012建政日还剩257天3小时17分31秒148毫秒