【发布时间】:2015-08-24 08:44:00
【问题描述】:
我一直在查看从特定日期开始运行的倒计时计时器,但是我使用的代码似乎只显示了过去 15 年的时间长度,而没有更早的时间?这是一个非常简单的概念,我只是无法开始工作,诸如 2001 年 1 月 12 日之类的日期很好,但任何低于 1999 年的日期似乎都没有效果,而且天数限制在 5440 左右...
window.onload=function() {
// Month,Day,Year,Hour,Minute,Second
upTime('oct,01,0000,00:00:00'); // ****** Change this line!
}
function upTime(countTo) {
now = new Date();
countTo = new Date(countTo);
difference = (now-countTo);
days=Math.floor(difference/(60*60*1000*24)*1);
hours=Math.floor((difference%(60*60*1000*24))/(60*60*1000)*1);
mins=Math.floor(((difference%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
secs=Math.floor((((difference%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
document.getElementById('days').firstChild.nodeValue = days;
document.getElementById('hours').firstChild.nodeValue = hours;
document.getElementById('minutes').firstChild.nodeValue = mins;
document.getElementById('seconds').firstChild.nodeValue = secs;
clearTimeout(upTime.to);
upTime.to=setTimeout(function(){ upTime(countTo); },1000);
}
#countup p {
display: inline-block;
padding: 5px;
background: #FFA500;
margin: 0 0 20px;
}
<div id="countup">
It's been
<p id="days">00</p>
<p class="timeRefDays">days</p>
<p id="hours">00</p>
<p class="timeRefHours">hours</p>
<p id="minutes">00</p>
<p class="timeRefMinutes">minutes</p>
<p id="seconds">00</p>
<p class="timeRefSeconds">second</p>
</div>
【问题讨论】:
-
可能是因为秒数超过整数限制,溢出
-
oct,01,0000,00:00:00是一种奇怪的格式,它的工作原理简直是个奇迹;您需要使用像yyyy-mm-dd hh:mm:ss这样的标准格式。 -
此外,如果您将差异转换回日期,则不必使用 Math.floor hacks 来获取日期设置。
-
我没有看到问题here。能不能再查一下。我用 1901 设定年份
-
为什么不用
new Date(year, month, day, hours, minutes, seconds, milliseconds?否则,使用new Date("October 13, 2014 11:13:00");或 ISO 日期"2015-12-24T12:00:00"之类的日期字符串作为w3schools.com/js/js_date_formats.asp 中的示例。此外,您不需要一次又一次地除以60*60*1000*24(和其他常量)。在每一步之后保存临时结果并将其用于下一步。更清晰更快捷
标签: javascript