2017-04-10 12 views
0

毎日11:00にリセットされた24時間カウントダウンが私のウェブサイトに必要です。毎日00:00に毎日00:00に当るカウントダウンスクリプト

私は何かを制御するためにこのスクリプトは必要ありません、私は訪問者が見るためにそこにいる必要があるので、例えば10時に訪問すると時計に1時間残り、カウントダウンします時、分、秒の形式で入力します。 そしてクライアントのタイムゾーンを無視する必要があります。

同様の回答がありましたが、1時間のウィンドウがあり、その後リセットされました。すぐにリセットする必要があります。どうすれば自分の要件を満たすことができますか?

は、ここで(21時00分に、このカウントは、その後1時間ウィンドウと比べて、再び開始)私が見つけたものです:

var date; 
var display = document.getElementById('time'); 

$(document).ready(function() { 
    getTime('GMT', function(time){ 
     date = new Date(time); 
    });  
}); 

setInterval(function() { 
    date = new Date(date.getTime() + 1000); 

    var currenthours = date.getHours(); 
    var hours; 
    var minutes; 
    var seconds; 
    if (currenthours != 21){ 
     if (currenthours < 21) { 
      hours = 20 - currenthours; 
     } else { 
      hours = 21 + (24 - currenthours); 
     } 
     minutes = 60 - date.getMinutes(); 
     seconds = 60 - date.getSeconds(); 

     if (minutes < 10) { 
      minutes = '0' + minutes; 
     } 
     if (seconds < 10) { 
      seconds = '0' + seconds; 
     } 

     display.innerHTML = hours + ':' + minutes + ':' +seconds; 
    } else { 
     display.innerHTML = 'LIVE NOW'; 
    } 
}, 1000); 

function getTime(zone, success) { 
    var url = 'http://json-time.appspot.com/time.json?tz=' + zone, 
     ud = 'json' + (+new Date()); 
    window[ud]= function(o){ 
     success && success(new Date(o.datetime)); 
    }; 
    document.getElementsByTagName('head')[0].appendChild((function(){ 
     var s = document.createElement('script'); 
     s.type = 'text/javascript'; 
     s.src = url + '&callback=' + ud; 
     return s; 
    })()); 
} 
+1

'currenthours!= 21'は、その21:00または21:59、またはその間にあるものとは関係なく、時間だけをチェックします。 – Qirel

答えて

0

私は1時間のリセットは、一人で時間を有効に起因することを推測します。でもあなたは日付計算に固執する必要があります夏時間変更の際に正確な一日の長さを取得するには

var date; 
var display = document.getElementById('time'); 

$(document).ready(function() { 
    getTime('GMT', function(time){ 
     date = new Date(time); 
    });  
}); 

setInterval(function() { 
    date = new Date(date.getTime() + 1000); 

    var currenthours = date.getHours(); 
    var currentSecs = date.getSeconds(); 
    var hours; 
    var minutes; 
    var seconds; 
    if (currenthours == 23 && currentsecs == 0){ 
     display.innerHTML = 'LIVE NOW'; 
    } else { 
     if (currenthours < 23) { 
      hours = 22 - currenthours; 
     } else { 
      hours = 23; 
     } 
     minutes = 60 - date.getMinutes(); 
     seconds = 60 - date.getSeconds(); 

     if (minutes < 10) { 
      minutes = '0' + minutes; 
     } 
     if (seconds < 10) { 
      seconds = '0' + seconds; 
     } 
    display.innerHTML = hours + ':' + minutes + ':' +seconds; 
    } 
}, 1000); 
0

:次のコードを試してみてください。

function time() { 
    var d1 = new Date(); 
    var d2 = Date.UTC(d1.getUTCFullYear(), 
         d1.getUTCMonth(), 
         d1.getUTCDate() + (d1.getUTCHours() < 11 ? 0 : 1), 
         11); 
    var dh = d2 - d1; 
    var hours = Math.floor(dh/3600000); 
    var dm = dh - 3600000 * hours; 
    var min = Math.floor(dm/60000); 
    var ds = dm - 60000 * min; 
    var sec = Math.floor(ds/1000); 
    var dmilli = ds - 1000 * sec; 
    setTimeout(time, dmilli); 
    hours = ('0' + hours).slice(-2); 
    min = ('0' + min).slice(-2); 
    sec = ('0' + sec).slice(-2); 
    document.querySelector('#the-final-countdown p').innerHTML = hours + ':' + min + ':' + sec; 
} 
time(); 
関連する問題