2017-10-09 97 views
0

我有一個難以置信的困難時間搞清楚如何讓這個JS代碼倒數到一個特定的日期。我希望能夠在網站上進行這項運動,並將其計爲10月20日(來自時代的第二位:1508457600,覺得這很重要?)。但是,每次刷新網站時,倒計時都會從預設時間開始。如何在JavaScript中創建倒計時到特定日期

我正在使用的代碼是在這裏:

<script> 
function getTimeRemaining(endtime) { 
    var t = Date.parse(endtime) - Date.parse(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 * 36)); 
    return { 
    'total': t, 
    'days': days, 
    'hours': hours, 
    'minutes': minutes, 
    'seconds': seconds 
    }; 
} 

function initializeClock(id, endtime) { 
    var clock = document.getElementById(id); 
    var daysSpan = clock.querySelector('.days'); 
    var hoursSpan = clock.querySelector('.hours'); 
    var minutesSpan = clock.querySelector('.minutes'); 
    var secondsSpan = clock.querySelector('.seconds'); 

    function updateClock() { 
    var t = getTimeRemaining(endtime); 

    daysSpan.innerHTML = t.days; 
    hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
    minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 

    if (t.total <= 0) { 
     clearInterval(timeinterval); 
    } 
    } 

    updateClock(); 
    var timeinterval = setInterval(updateClock, 1000); 
} 

var deadline = new Date(Date.parse(new Date()) + 15 * 24 * 60 * 60 * 1000); 
initializeClock('clockdiv', deadline); 
</script> 

會有人能夠提供任何洞察到這一點?

在此先感謝。

+0

什麼'Date(Date.parse(new Date())'的用途? – laruiss

+0

使用Date.getSeconds()和Date.getMinutes()來代替自己的解析。https://developer.mozilla.org/de/d OCS /網絡/的JavaScript /參考/ Global_Objects /日期 – xDreamCoding

回答

0

問題實際上並不是您的計時器是「重置」的,而是您每次刷新頁面時倒計時到不同的時間。這是因爲你的deadline,這需要一個new Date(),並簡單地增加了一點時間:
var deadline = new Date(Date.parse(new Date()) + 15 * 24 * 60 * 60 * 1000)

爲了倒計時一設置時候,你需要通過目標日期的Date()括號,如用var deadline = new Date("Jan 1, 2018 00:00:00").getTime()

根據UTC,可以使用.getTime()獲取與指定日期的時間對應的數值。

希望這會有所幫助! :)

0

嘗試簡化你的代碼,你正在做一堆不必要的東西。

要獲得增量時間嘗試:

var delta = new Date(Date.now() - new Date(1508457600000)); 

然後獲得秒,分,因此,一個用途Date方法:

var hoursSpan = delta.getHours(); 
var minutesSpan = delta.getMinutes(); 
var secondsSpan = delta.getSeconds(); 

幾天看到this