转:JS实现记时
转:JS实现倒计时
前一阵子要用一个JS倒计时的功能,就从网上找了一个不错的,参考着改成自己需要的了,这里记录一下以备下次再用。原文链接找不到了,找到一个类似的,就姑且用这个。
原文链接:JS倒计时:从某个固定时间开始倒记(也不知道这篇是不是转载的我看的那篇,也是转载的)
转载内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>JS时间倒计时</title> <script type="text/javascript"> var time_now_server,time_now_client,time_end,time_server_client,timerID; time_end=new Date("2010/10/4 11:10:1");//结束的时间 time_end=time_end.getTime(); time_now_server=new Date("2010/10/04 10:10:1");//开始的时间 time_now_server=time_now_server.getTime(); time_now_client=new Date(); time_now_client=time_now_client.getTime(); time_server_client=time_now_server-time_now_client; setTimeout("show_time()",1000); function show_time() { var timer = document.getElementById("timer"); if(!timer){ return ; } timer.innerHTML =time_server_client; var time_now,time_distance,str_time; var int_day,int_hour,int_minute,int_second; var time_now=new Date(); time_now=time_now.getTime()+time_server_client; time_distance=time_end-time_now; if(time_distance>0) { int_day=Math.floor(time_distance/86400000) time_distance-=int_day*86400000; int_hour=Math.floor(time_distance/3600000) time_distance-=int_hour*3600000; int_minute=Math.floor(time_distance/60000) time_distance-=int_minute*60000; int_second=Math.floor(time_distance/1000) if(int_hour<10) int_hour="0"+int_hour; if(int_minute<10) int_minute="0"+int_minute; if(int_second<10) int_second="0"+int_second; str_time=int_day+"天"+int_hour+"小时"+int_minute+"分钟"+int_second+"秒"; timer.innerHTML=str_time; setTimeout("show_time()",1000); } else { timer.innerHTML =timer.innerHTML; clearTimeout(timerID) } } </script> </head> <body> <div id="timer">这里会被替换成例如:**天**小时**分钟**秒</div> </body> </html>
以下是我自己参考着改成需要的,大同小异:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>JS时间倒计时</title> <script type="text/javascript"> var time_now_server,time_now_client,time_end,time_server_client,timerID; time_end=new Date("2016/05/09 12:00:00").getTime();//结束时间 time_now_server=new Date("2016/05/09 9:00:00").getTime();//开始的时间 time_now_client=new Date().getTime(); time_server_client=time_now_server-time_now_client; function show_time() { var timer = document.getElementById("timer"); if (!timer) { return; } var time_now, time_distance, str_time; var int_day, int_hour, int_minute, int_second; var time_now = new Date(); time_now = time_now.getTime() + time_server_client; time_distance = time_end - time_now; if (time_distance > 0) { int_day = Math.floor(time_distance / 86400000) time_distance -= int_day * 86400000; int_hour = Math.floor(time_distance / 3600000) time_distance -= int_hour * 3600000; int_minute = Math.floor(time_distance / 60000) time_distance -= int_minute * 60000; int_second = Math.floor(time_distance / 1000) if (int_hour < 10) int_hour = "0" + int_hour; if (int_minute < 10) int_minute = "0" + int_minute; if (int_second < 10) int_second = "0" + int_second; int_minute= parseInt(int_minute,10); int_second = parseInt(int_second,10); if(int_minute==0 && int_second){//0分0秒,也就是没有时间了 timer.innerHTML = "0:0"; clearTimeout(timerID); //其他操作 return false; }else{ str_time = int_hour+":"+int_minute + ":" + int_second; timer.innerHTML = str_time; timerID = setTimeout("show_time()", 1000); } } else { timer.innerHTML = timer.innerHTML; clearTimeout(timerID); } } </script> </head> <body onload="show_time();"> <h1 id="timer" style="font-weight:bold;color:red;margin-left:30px;"></h1> </body> </html>
注意点:JS里面的new Date()好像只能用/来格式化不能用-,如:
time_end=new Date("2016/05/09 12:00:00").getTime();//这样子是对的
time_end=new Date("2016-05-09 12:00:00").getTime();//这样子是错的,不能获取到指定的日期。