2013-08-17 2 views
0

Я нашел этот кусок Javascript на StackOverFlow, который отображает прямой обратный отсчет до определенной даты.Обратный отсчет Javascript с определенным часовым поясом

<script> 
var end = new Date('02/19/2012 10:1 AM'); 

    var _second = 1000; 
    var _minute = _second * 60; 
    var _hour = _minute * 60; 
    var _day = _hour * 24; 
    var timer; 

    function showRemaining() { 
     var now = new Date(); 
     var distance = end - now; 
     if (distance < 0) { 

      clearInterval(timer); 
      document.getElementById('countdown').innerHTML = 'EXPIRED!'; 

      return; 
     } 
     var days = Math.floor(distance/_day); 
     var hours = Math.floor((distance % _day)/_hour); 
     var minutes = Math.floor((distance % _hour)/_minute); 
     var seconds = Math.floor((distance % _minute)/_second); 

     document.getElementById('countdown').innerHTML = days + ' Days '; 
     document.getElementById('countdown').innerHTML += hours + ' Hours '; 
     document.getElementById('countdown').innerHTML += minutes + ' Minutes '; 
     document.getElementById('countdown').innerHTML += seconds + ' Seconds'; 
    } 

    timer = setInterval(showRemaining, 1000); 
</script> 
<div id="countdown"></div> 

Однако, я хочу сделать так, чтобы время, затрачиваемое на него, было EST. Так что, если люди будут видеть счетчик с разных часовых поясов, они увидят то же самое. Как я могу это сделать? Я новичок в JavaScript, и я не знаю, куда идти отсюда.

+0

'новая дата ('02/19/2012 10: 1 AM UTC ');' или что-то ... просто не забудьте изменить дату на время UTC – jeremy

ответ

0

Это будет работать:

<script> 
var end = new Date('02/19/2012 10:1 AM EST'); 

var _second = 1000; 
var _minute = _second * 60; 
var _hour = _minute * 60; 
var _day = _hour * 24; 
var timer; 

function getESTOffset() { 

    return new Date().getTimezoneOffset() - (end.getTimezoneOffset()) 
} 

function showRemaining() { 
    var now = new Date(); 
    var distance = end - now - getESTOffset() * _hour; 
    if (distance < 0) { 

     clearInterval(timer); 
     document.getElementById('countdown').innerHTML = 'EXPIRED!'; 

     return; 
    } 
    var days = Math.floor(distance/_day); 
    var hours = Math.floor((distance % _day)/_hour); 
    var minutes = Math.floor((distance % _hour)/_minute); 
    var seconds = Math.floor((distance % _minute)/_second); 

    document.getElementById('countdown').innerHTML = days + ' Days '; 
    document.getElementById('countdown').innerHTML += hours + ' Hours '; 
    document.getElementById('countdown').innerHTML += minutes + ' Minutes '; 
    document.getElementById('countdown').innerHTML += seconds + ' Seconds'; 
} 

timer = setInterval(showRemaining, 1000); 
</script> 
<div id="countdown"></div> 

Ключевым моментом здесь является установка конец в часовом поясе вы хотите быть в (EST) и используя его смещение перед вычислениями.

+0

Некоторые браузеры могут разрешить 'EST'' на входе строка, но это нестандартно и не гарантируется. Даже тогда он просто корректирует внутреннее значение во время разбора. К тому времени, когда вы вызываете 'getTimezoneOffset', вы по-прежнему используете * локальный * часовой пояс для компьютера, на котором работает код, а не EST. –

Смежные вопросы