2012-05-15 2 views
0

Я использую таймер обратного отсчета Keith Woods (http://keith-wood.name/countdown.html) с помощью функции serverSync. Это, кажется, отлично работает в одной стране, однако, когда я проверяю обратный отсчет из другой страны, кажется, что разница в 15 часов равна.jQuery Countdown serverSync 15 часов разницы

Так что в Австралии обратный отсчет показывает 1 день, но в США он показывает 1 день 15 часов. Я внедрил код на стороне сервера точно так же, как объяснялось на сайте, но по-прежнему существует разница во времени. Если я изменяю свои локальные часы, это меняет время обратного отсчета, но когда появляется обновление, обратный отсчет показывает правильное количество времени, поэтому я знаю, что он получает время сервера. Однако в США по-прежнему существует разница во времени.

Любые идеи, почему это может быть, если он читает время сервера?

function serverTime() { 
    var time = null; 
    $.ajax({url: 'server-time.php?random=' + Math.floor(Math.random() * 1000000), 
     async: false, 
     dataType: 'text', 
     success: function(text) { 
      time = new Date(text); 
     }, error: function(http, message, exc) { 
      time = new Date(); 
     }}); 
     return time; 
    } 

    var launchDate = ""; 

    $(function() { 
     launchDate = new Date(
      2012, 
      5-1, 
      22, 
      11 
     ); 
     $('#launchCountdown').countdown('destroy') 
     $('#launchCountdown').countdown({ 
       until: launchDate, 
       serverSync: serverTime, 
       format: 'DHMS', 
       expiryText: '<p>It\'s all over</p>' 
       //onTick: highlightLast5 
      }); 
     }); 

ответ

2

Вы должны иметь дело с вопросами о часовом поясе самостоятельно. Обратный отсчет будет автоматически применять эти настройки according to the docs:

Эта дата и время следует учитывать часовой пояс сервера и никакой разницы между этим временем и клиента налагается на обратный отсчет времени, когда он был запущен или изменен.

Таким образом, часовой пояс клиента учитывается, так как сценарий загружается на основе настроек клиента.

Редактировать более:

Не зная ваш точный код, который я не могу быть уверен, но вы должны устанавливать это часовой пояс, а затем компенсируя на ваш сервер времени один раз, а не устанавливать его на сервер времени, который автоматически решает проблему взаимозачета для каждого часового пояса, чего вы не хотите. Поэтому используйте до:

$(selector).countdown({ 
    until: new Date(2012, 8 - 1, 8)}); // add a date object with a timezone 
$(selector).countdown({ 
    // create the offset based on your server timezone (e.g Sydney) 
    // this overrides servertime with a static value that you want 
    until: $.countdown.UTCDate(+10, 2012, 1 - 1, 26), timezone: +10}); 
$(selector).countdown({until: '+1m -1d'}); // set it to one one day from now 
+0

Спасибо. Я никогда не использовал UTCDate раньше, поэтому не знал, что это было. – puks1978

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