2012-05-15 3 views
0

저는 serverSync 기능과 함께 키스 우즈 카운트 다운 타이머 (http://keith-wood.name/countdown.html)를 사용하고 있습니다. 이것은 하나의 나라에서 훌륭하게 작동하는 것처럼 보이지만 다른 나라에서 카운트 다운을 확인하면 15 시간 차이가 나는 것 같습니다.jQuery 카운트 다운 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을 적용합니다.

그래서 클라이언트의 설정에 따라 스크립트가로드되므로 클라이언트의 시간대가 고려됩니다. 더 많은 것을 가진

편집 : 나는 확신 할 수는 없지만, 오히려 서버 시간으로 설정보다, 한 번 서버 시간에 상쇄 다음 GMT이 설정되어야한다

정확한 코드를 모른 채하는 자동으로 각 시간대로 오프셋하는 문제를 해결합니다. 따라서 까지 :

$(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

관련 문제