2017-03-06 21 views
0

我想写一个计数器,每秒钟,每分钟,每小时和每天计数我。它不应该从0开始,而是从2分钟开始。现在我有以下代码,但它似乎并不正确。我是初学者,并试图理解JS。提前感谢您的帮助和支持!如何以正确的方式计算秒,分,小时和天数?

<!doctype html> 
<html> 
    <head> 
    <title>Counter</title> 
    <script> 
     start=new Date().getTime()-120000; 
     function updateCounter() { 
     var dif=new Date().getTime()-start; 
     setTimeout(updateCounter, 1000-(dif%1000)); 
     var sec=Math.floor(dif/1000); 
     var min=Math.floor(sec/60); 
     var hou=Math.floor(min/60); 
     var day=Math.floor(hou/24); 
     sec %= 60; 
     if (sec<10) { 
      sec="0"+sec; 
     } 
     document.getElementById("counter").innerHTML=day+":"+hou+":"+min+":"+sec; 
     } 
    </script> 
    </head> 
    <body onload="updateCounter();"> 
    <p id="counter"></p> 
    </body> 
</html> 
+1

它怎么样_“似乎不正确”_?从你的描述看来它工作正常([jsfiddle例子](https://jsfiddle.net/vntdcjy3/)) – chazsolo

+0

问题是,我不知道如何从24小时切换到1天。现在它计算1day24h0m0sec。但它应该是1day0h0m0sec。这是我的代码 –

回答

0

对不起,我不知道我不能将代码放入评论的回复。所以这里是我改进的代码。问题是,我不知道如何从24小时切换到1天。现在它计算1day24h0m0sec。但它应该是1day0h0m0sec。

<!doctype html> 
<html> 
    <head> 
    <title>Counter</title> 
    <script> 
     var start=new Date().getTime()-86400000; 
     function updateCounter() { 
     var dif=new Date().getTime()-start; 
     setTimeout(updateCounter, 1000-(dif%1000)); 
     var sec=Math.floor(dif/1000); 
     var min=Math.floor(sec/60); 
     var hou=Math.floor(min/60); 
     var day=Math.floor(hou/24); 
     sec %= 60; 
     if (sec<10) { 
      sec="0"+sec; 
     } 
     min %= 60; 
     if (min<10) { 
      min="0"+min; 
     } 
     hou %= 60; 
     if (hou<10) { 
      hou="0"+hou; 
     } 
     day %= 24; 
     if (day<10) { 
      day="0"+day; 
     } 
     document.getElementById("counter").innerHTML=day+":"+hou+":"+min+":"+sec; 
     } 
    </script> 
    </head> 
    <body onload="updateCounter();"> 
    <p id="counter"></p> 
    </body> 
</html> 
相关问题