【问题标题】:Building time Countdown建筑时间倒计时
【发布时间】:2017-04-09 16:21:44
【问题描述】:

我正在尝试构建时间倒计时,我正在发送一个以毫秒为单位的时间戳,并且每一秒我都会将此值减去当前时间以获得倒计时。

我正在使用这个网站来生成时间戳

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/

【问题讨论】:

  • 您可以考虑使用momentjs (momentjs.com/docs/#/displaying/fromnow),而不是自己编写此逻辑
  • var ctdHours = parseInt((ctdMillis / (1000 * 60 * 60)) % 24)这一行中,% 24表示除以24后的remainder,比如75会变成3。

标签: javascript


【解决方案1】:

ctdHours 表达式中删除% 24 并在innerHTML 表达式中更改ctdHours

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

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多