2016-11-22 248 views
0

所以我写了一些代码在我的网站上显示倒数时钟。 的HTML看起来像这样:javascript倒计时时钟日期问题

<div id="deadline_Container"> 
<div id="clockdiv"> 
    <span class="deadline_Text">You only have </span> 
<div> 
    <span class="days"></span><span class="smalltext">Day</span> 
</div> 
<div> 
    <span class="hours"></span><span class="smalltext">Hours</span> 
</div> 
<div> 
<span class="minutes"></span><span class="smalltext">Minutes</span> 
</div> 
    <div class="clockLast"> 
    <span class="seconds"></span><span class="smalltext">Seconds</span> 
</div> 
    <span class="deadline_Text2">left to use your voucher code!</span> 

</div> 
</div> 

和JavaScript:

<script type="text/javascript"> 
var deadline = new Date(Date.UTC(2016,11, 22, 23, 59, 59)); 
function time_remaining(endtime){ 
var t = endtime - new Date(); 
var seconds = Math.floor((t/1000) % 60); 
var minutes = Math.floor((t/1000/60) % 60); 
var hours = Math.floor((t/(1000*60*60)) % 24); 
var days = Math.floor(t/(1000*60*60*24)); 
return {'total':t, 'days':days, 'hours':hours, 'minutes':minutes, 'seconds':seconds}; 
} 
function run_clock(id,endtime){ 
var clock = document.getElementById(id); 

var days_span = clock.querySelector('.days'); 
var hours_span = clock.querySelector('.hours'); 
var minutes_span = clock.querySelector('.minutes'); 
var seconds_span = clock.querySelector('.seconds'); 

function update_clock(){ 
    var t = time_remaining(endtime); 

    days_span.innerHTML = t.days; 
    hours_span.innerHTML = ('0' + t.hours).slice(-2); 
    minutes_span.innerHTML = ('0' + t.minutes).slice(-2); 
    seconds_span.innerHTML = ('0' + t.seconds).slice(-2); 

    if(t.total<=0){ clearInterval(timeinterval); document.getElementById('deadline_Container').style.display = "none"; document.getElementById('deadline_Container2').style.display = "block"; } 
} 
update_clock(); 
var timeinterval = setInterval(update_clock,1000); 
} 
    run_clock('clockdiv',deadline); 
</script> 

所以它应该被设定在23.59(22 2016年,11)月22日到期。 现在,除了倒计时30天之外,现在所有的工作都有所不同。所有其他值都是正确的(小时,分钟,秒)。 现在,如果我将日期设置为2016,10,22,则表示0天,那么这就对了。我想这解决了这个问题,但我不明白为什么会发生这种情况。 任何人都可以看到代码有什么问题吗?

回答

5

个月参数为基础的,因此一月份= 0,十一月= 10等

所以,你的情况,如果你想2016年11月22日的结束日期,你需要设置作为:

var deadline = new Date(Date.UTC(2016,10, 22, 23, 59, 59)); 
+1

哦,对了,这是有道理的。感谢您解决这个问题! – MariaL

+1

@MariaL,如果马克的回答适合你,不要'忘记接受它:) – AxelH