2016-11-22 2 views
0

Also habe ich etwas Code geschrieben, um eine Countdown-Uhr auf meiner Website anzuzeigen. Die html sieht wie folgt aus:Javascript Countdown Uhr Datum Problem

<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> 

Und das 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> 

es soll so eingestellt werden, um 23.59 am 22. November (2016, 11, 22) auslaufen. Jetzt funktioniert alles außer, wenn ich den Countdown überprüfe, sagt es noch 30 Tage. Alle anderen Werte sind richtig (Stunden, Minuten, Sekunden). Jetzt, wenn ich das Datum auf 2016,10,22 setze, heißt es 0 Tage, also ist es richtig. Ich denke, das behebt das Problem, aber ich verstehe nicht wirklich, warum das passiert. Kann jemand sehen, was mit dem Code falsch ist?

Antwort

5

Der Monate Parameter ist Null -Basis, so Januar = 0, November = 10 usw.

in Ihrem Fall also, wenn Sie ein Enddatum 22. November wollen 2016 müssen Sie es einrichten wie:

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

Ohhh richtig, das macht dann Sinn. Danke, dass du das geklärt hast! – MariaL

+1

@MariaL, wenn Marks Antwort Ihnen passt, vergessen Sie nicht, es zu akzeptieren :) – AxelH