0

对不起这个愚蠢的问题:)

所以我有一个漂亮的计时器

 function wr_hours(item){

    //  timeout we keep seconds
    var sek = item.data("timeout");

    var min = Math.floor((sek /60)%60) ;//min
    var hour = Math.floor((sek / (60*60)) %24) ;//hours
    var days = Math.floor(sek /(24*60*60)) ;//days
    var counterWrapper = $("#b-countdown");

    if ( min < 10 ){
        min = "0" + min;
    }
    //  CSS around
    if ( hour != counterWrapper.data("left") ){
        var hourClass = hour == 0 ? 1 : hour;
        counterWrapper.attr("class", "left-" + hourClass).attr("data-left", hourClass)
    }

    var time_wr = hour + ":" + min;
    item.html(time_wr);
    item.data("timeout", (sek - 1) > 0 ? sek - 1 : 24 * 60 * 60);
}

setInterval(function(){
    $(".deadline").each(function(){ wr_hours($(this));})
}, 1000);

它适用于 html 中的以下代码:

<div id="b-countdown" data-left="" class="">
    <span class="deadline" data-timeout="24053"></span>
</div>

那么我如何将数据超时设置到午夜?并在之后重置它。

4

1 回答 1

1

将日期设置为午夜,然后从当前时间(以 ms 为单位)中减去午夜的 ms。现在在你的超时使用它

var midnight = new Date();
midnight.setHours(24,0,0,0); //midnignt

var timeTilMidnight = midnight.getTime() - Date.now();

编辑 - 不确定这将如何处理夏令时

于 2013-11-10T23:02:07.043 回答