建筑时间倒计时

时间:2017-04-09 16:21:45

标签: javascript

我正在尝试建立时间倒计时,我正在以毫秒为单位发送时间戳,每秒我都会将此值减去当前时间以进行倒计时。

我正在使用此网站生成时间戳

https://www.epochconverter.com/

但是当我选择时间戳日为三天时,我的脚本只检查小时,分钟和秒,并忘记日,月或年。

示例:当我选择此日期时 - 11/04/2017 20:00:00

我的脚本没有显示我到达时间戳需要多少小时,显示3小时不正确

我的代码:

var updateTime = setInterval(function() {
    var getEpochEnding = new Date(1492111767000);
    var getTimeNow = new Date();
    var timeZone = getTimeNow.getTimezoneOffset();
    var ctdMillis = new Date(Math.abs(getEpochEnding - (getTimeNow - (timeZone * 60000))));

    var ctdSeconds = parseInt((ctdMillis / 1000) % 60);
    var ctdMinutes = parseInt((ctdMillis / (1000 * 60)) % 60);
    var ctdHours = parseInt((ctdMillis / (1000 * 60 * 60)) % 24);

    if ((getTimeNow - (timeZone * 60000)) > getEpochEnding) {

        ctdSeconds = 0;
        ctdMinutes = 0;
        ctdHours = 0;
        clearInterval(updateTime);
    }

    document.getElementById('countdown').innerHTML = ("0" + ctdHours).substr(-2) + ":" + ("0" + ctdMinutes).substr(-2) + ":" + ("0" + ctdSeconds).substr(-2);

}, 1000);

的jsfiddle:

https://jsfiddle.net/udec8074/1/

1 个答案:

答案 0 :(得分:-1)

% 24表达式中移除ctdHours并更改ctdHours表达式中的innerHTML

    var updateTime = setInterval(function() {
    var getEpochEnding = new Date(1492111767000);
    var getTimeNow = new Date();
    var timeZone = getTimeNow.getTimezoneOffset();
    var ctdMillis = new Date(Math.abs(getEpochEnding - (getTimeNow - (timeZone * 60000))));

    var ctdSeconds = parseInt((ctdMillis / 1000) % 60);
    var ctdMinutes = parseInt((ctdMillis / (1000 * 60)) % 60);
    var ctdHours = parseInt(ctdMillis / (1000 * 60 * 60));

    if ((getTimeNow - (timeZone * 60000)) > getEpochEnding) {

        ctdSeconds = 0;
        ctdMinutes = 0;
        ctdHours = 0;
        clearInterval(updateTime);
    }

    document.getElementById('countdown').innerHTML = ctdHours + ":" + ("0" + ctdMinutes).substr(-2) + ":" + ("0" + ctdSeconds).substr(-2);

}, 1000);

虽然这个解决方案不会在几小时内显示前导零:“1:23:45”而不是原来的“01:23:45”。