如何在本月的每个星期天进行倒计时?

时间:2013-07-26 08:13:57

标签: javascript jquery counter countdown

我的网站倒计时,我想让它倒计时到下周日11:00 A.M,当它的星期日11:01 A.M我想让它自动倒计时到下周日11:00 A.M.我希望每个月重复一次......

我有这个脚本,但似乎不能让它工作,有人可以帮助我吗?

提前致谢

这是我的HTML ...

<div class="eventtd">
        <div class="nextevt">Next Service Start In:</div>
           <div class="time" contents="2" rel="1374397200">
       </div> <!-- end time -->

这是我使用的脚本,截至目前,当它达到0时,它继续变为负值而不是重置。

jQuery(document).ready(function($) {

if (timerhelp == 'yes') {
    var init = setInterval(animation, 100);
}
function animation(){       
    var deadline1 = $('.time').attr('rel');
    var deadline2 = $('.time').attr('contents');
    var now = new Date();
    now = Math.floor(now / 1000);
    now = now + Math.floor(deadline2 * 60 * 60);
    var counter1 = deadline1 - now;
    var seconds1=Math.floor(counter1 % 60);
    if (seconds1 < 10 && seconds1 > 0 ){
        seconds1 = '0'+seconds1;

    }
    counter1=counter1/60;
    var minutes1=Math.floor(counter1 % 60);
    if (minutes1 < 10 && minutes1 > 0){
        minutes1 = '0'+minutes1;

    }
    counter1=counter1/60;
    var hours1=Math.floor(counter1 % 24);
    if (hours1 < 10 && hours1 > 0){
        hours1 = '0'+hours1;
    }
    counter1=counter1/24;
    var days1=Math.floor(counter1);
    if (days1 < 10 && days1 > 0){
        days1 = '0'+days1;
    }
    $('.time').html('<table><tbody><tr><th class="day">'+days1+'</th><th class="day">'+hours1+'</th><th class="day">'+minutes1+'</th><th class="day">'+seconds1+'</th></tr><tr><th>Days</th><th>Hours</th><th>Min</th><th>Sec</th></tr></tbody></table>');


}
});

2 个答案:

答案 0 :(得分:1)

这段代码应该总是给你下个星期天:

var now = new Date();
var sunday = new Date();
sunday.setDate(now.getDate() - now.getDay()); // Make Sunday
sunday.setHours(11); // Set 11am
sunday.setMinutes(0);
sunday.setSeconds(0);
sunday.setMilliseconds(0);
if (sunday < now) sunday.setDate(sunday.getDate() + 7); // Make sure it's future
millisecondsLeft = sunday - now;

如果sunday < now,您可以检查每次传递,如果是,则重新计算sunday

(如果有人想知道,如果你在星期天下午计算sunday,那么“确定它的未来”行应该触发......)

答案 1 :(得分:0)

尝试添加:

var timerhelp = 'yes';
jQuery(document).ready(function($) {

     nextSunday();

if (timerhelp == 'yes') {
    var init = setInterval(animation, 900); // did change to 900, no need to calculate it more than once a second :)
}
function animation(){       
    var deadline1 = $('.time').attr('rel');
    var deadline2 = $('.time').attr('contents');
    var now = new Date();
    now = Math.floor(now / 1000);
    now = now + Math.floor(deadline2 * 60 * 60);
    var counter1 = deadline1 - now;
    var seconds1=Math.floor(counter1 % 60);
    if (seconds1 < 10 && seconds1 > 0 ){
        seconds1 = '0'+seconds1;

    }
    counter1=counter1/60;
    var minutes1=Math.floor(counter1 % 60);
    if (minutes1 < 10 && minutes1 > 0){
        minutes1 = '0'+minutes1;

    }
    counter1=counter1/60;
    var hours1=Math.floor(counter1 % 24);
    if (hours1 < 10 && hours1 > 0){
        hours1 = '0'+hours1;
    }
    counter1=counter1/24;
    var days1=Math.floor(counter1);
    if (days1 < 10 && days1 > 0){
        days1 = '0'+days1;
    }
  if(days1<0&&hours1<0&&minutes1<0&&seconds1<0){
 nextSunday();
}
    $('.time').html('<table><tbody><tr><th class="day">'+days1+'</th><th class="day">'+hours1+'</th><th class="day">'+minutes1+'</th><th class="day">'+seconds1+'</th></tr><tr><th>Days</th><th>Hours</th><th>Min</th><th>Sec</th></tr></tbody></table>');


}
});

function nextSunday(){ 
var now = new Date().getTime() / 1000; // time in seconds;
var rel = $('.time').attr('rel');
    if(parseInt(now)>parseInt(rel)){
        var n = parseInt(rel)
        while(n<parseInt(now)){
            n =  n+604800;
        }
        $('.time').attr('rel',n);
    }
}