2015-05-06 13 views
6

Obecnie mamy ten kod, który działa, oprócz tego, że musi użyć określoną strefę czasową, zamiast strefy czasowej użytkownika:Ustawianie strefy czasowej podczas korzystania z jQuery Countdown

$('#countdown').countdown('<?php echo $date_end?>').on('update.countdown', function(event) { 
      var format = '%-S second%!S'; 

      if (event.offset.years > 0 || event.offset.weeks > 0 || event.offset.days > 0 || event.offset.hours > 0 || event.offset.minutes > 0) { 

       if(event.offset.minutes > 0) { 
        format = '%-M minute%!M ' + format; 
       } 
       if(event.offset.hours > 0) { 
        format = '%-H hour%!H ' + format; 
       } 
       if(event.offset.days > 0) { 
        format = '%-d day%!d ' + format; 
       } 
       if(event.offset.weeks > 0) { 
        format = '%-w week%!w ' + format; 
       } 
      } 
      $(this).html(event.strftime(format)); 
     }).on('finish.countdown', function(event) { 
      $(this).html('Finished'); 
     }); 

widziałem kilka przykładów dodawania strefy czasowe, ale żaden nie używa wtyczki odliczającej jquery w taki sam sposób jak my.

Jakieś pomysły, jak dodać +10 jako aktualną strefę czasową? więc korzysta z tego zamiast strefy czasowej użytkownika?

Dzięki.

+0

Nie jestem pewien, czy mam zrozumienia sposób używasz wtyczki, lub jeśli jest to nawet takie same wtyczki jak to: http : //keith-wood.name/countdown.html#zones Jednak użyłem wtyczki na stronie i przekazałem jej datę/czas do odliczania do strefy czasowej -7 w następujący sposób: jQuery ('# odliczanie') odliczanie ({until: new Date (2020, 1-1, 11, 5, 35, 35), strefa czasowa: -7, format: "YODHMS", compact: true}); Być może to pomaga? – jonathanbell

Odpowiedz

4

Wygląda na to, że faktyczna data użyta w kodzie pochodzi z tego fragmentu kodu PHP. Można ustawić domyślną strefę czasową w PHP przy użyciu:

date_default_timezone_set($timezone_identifier); 

$timezone_identifier jest ciągiem znaków, które mogą być takie rzeczy jak 'UTC' lub 'America/Los_Angeles'. Aby uzyskać pełną listę obsługiwanych identyfikatorów stref czasowych, zobacz .

+0

Prawidłowo, jest on przetwarzany przez PHP. W tym formacie: 2015-05-14 17:30:00 Używając php lub javascript, jak mogę powiedzieć javascriptowi, że ta data/czas jest w GMT + 10, a nie w strefie czasowej użytkownika? – Martin

+0

Myślę, że Michał mówi, że możesz ustawić taką tablicę: 'var timeZones = [" GMT "," EST "," CMT "];' a następnie zrób coś w stylu 'date_default_timezone_set (timeZones [1]) ; ' – jmcmahon443

1

Zgodnie z dokumentacją można uzyskać dostęp do obiektu finalDate za pomocą event.finalDate. Więc jeśli nie można ustawić po stronie serwera stref czasowych, czy event.finalDate.setUTCHours(10) przed wywołaniem event.strftime

Więcej na setUTCHours tutaj: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours

+0

Próbowałem już dodanie event.finalDate.setUTCHours (10); tuż przed $ (this) .html (event.strftime (format)); i nic się nie zmienia. – Martin

5

Jestem zgadywania używasz https://github.com/hilios/jQuery.countdown, ponieważ nie ma opcji strefy czasowej go użyć .

Użyłem pliku moment.js i moment-timezone-with-data.js (zawierającego wszystkie strefy czasowe) do obsługi strefy czasowej.

<div data-countdown="2015/05/20" data-zone="US/Central" class="countdown"></div> 

funkcja konwersji datę odpowiedniej strefy czasowej i powraca w milisekundach

var timefun = function (countdown,zone){ 
var date = moment.tz(countdown,"YYYY/MM/DD",zone); 
return date.valueOf(); 
} 

skorzystać z powyższej funkcji przejść milisekund jako argument jQuery.countdown()

$(".countdown").countdown(timefun($(".countdown").data("countdown"),$(".countdown").data("zone"))) 

przykład: http://jsfiddle.net/heLrsnqx/2/

jeśli używasz http://keith-wood.name/countdown.html patrz Poniższy przykład

przykład: http://jsfiddle.net/w1oyv8kv/

+0

Witam. Używam tej wtyczki: http://keith-wood.name/countdown.html - wywołanie jej zgodnie z przykładowym kodem w pytaniu powyżej – Martin

+0

Dzięki temu przykład keithwooda działa dobrze, Z WYJĄTKIEM, dodaje błędne 3 z przodu patrz dni: http://jsfiddle.net/w1oyv8kv/3/ – Martin

+0

zakresy miesięcy od 0 do 11, wspomniałeś 2015,5,30 przypada w czerwcu, jeśli szukasz może zmienić go na 2015, 4,30 –

Powiązane problemy