2015-05-06 11 views
6

Attualmente abbiamo questo codice, che funziona, tranne che deve utilizzare un fuso orario specificato, invece di fuso orario dell'utente:impostazione del fuso orario durante l'utilizzo di 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'); 
     }); 

Ho visto diversi esempi di aggiunta di fusi orari, ma nessuno usa il plugin per il conto alla rovescia jQuery nello stesso modo in cui lo siamo noi.

Qualche idea su come aggiungere +10 come fuso orario corrente? quindi usa quello piuttosto che il fuso orario dell'utente?

Grazie.

+0

Non sono sicuro se sto capire il modo in cui si sta utilizzando il plug-in, o se è anche lo stesso plug-in come questo: http : //keith-wood.name/countdown.html#zones Tuttavia, ho usato il plugin su un sito e gli ho passato la data/ora per il conto alla rovescia in timezone -7 in questo modo: jQuery ('# countdown'). countdown ({until: new Date (2020, 1-1, 11, 5, 35, 35), fuso orario: -7, formato: 'YODHMS', compatto: true}); Forse questo aiuta? – jonathanbell

risposta

4

Sembra che la data effettiva utilizzata nel codice provenga da quello snippet di PHP. È possibile impostare il fuso orario predefinito in PHP utilizzando:

date_default_timezone_set($timezone_identifier); 

$timezone_identifier è una stringa che può essere cose come 'UTC' o 'America/Los_Angeles'.

Per un elenco completo degli identificatori del fuso orario supportati, vedere related PHP docs.

+0

Corretto, viene analizzato da PHP. In questo formato: 2015-05-14 17:30:00 Utilizzando php o javascript, come posso dire a javascript se questa data/ora è in GMT + 10 piuttosto che nel fuso orario dell'utente? – Martin

+0

Penso che quello che sta dicendo Michal sia che puoi impostare un array come questo: 'var timeZones = [" GMT "," EST "," CMT "];' e poi fai qualcosa come 'date_default_timezone_set (timeZones [1]) ; ' – jmcmahon443

1

In base alla documentazione, è possibile accedere all'oggetto finalDate con event.finalDate. Quindi, se non è possibile impostare il fuso orario lato server, fare event.finalDate.setUTCHours(10) prima di chiamare event.strftime

Maggiori info su setUTCHours qui: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours

+0

Ho provato ad aggiungere event.finalDate.setUTCHours (10); poco prima di $ (questo) .html (event.strftime (formato)); e nulla cambia. – Martin

5

sto indovinando che si sta utilizzando https://github.com/hilios/jQuery.countdown, perché non ha opzioni di fuso orario per usarlo .

Ho usato moment.js e moment-timezone-with-data.js (contiene tutti i fusi orari) per gestire il fuso orario.

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

funzione per convertire la data corretta fuso orario e ritorna in millisecondi

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

fanno uso della funzione sopra per passare millisecondi come argomento jQuery.countdown()

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

esempio: http://jsfiddle.net/heLrsnqx/2/

se si utilizza http://keith-wood.name/countdown.html, vedere seguente esempio

esempio: http://jsfiddle.net/w1oyv8kv/

+0

Ciao. Sto usando questo plugin: http://keith-wood.name/countdown.html - chiamandolo come per il codice di esempio nella domanda sopra – Martin

+0

Grazie l'esempio di keithwood funziona bene, TRANNE, si aggiungono 3 errori in-front dei giorni, vedi qui: http://jsfiddle.net/w1oyv8kv/3/ – Martin

+0

intervalli di mese da 0 a 11, hai menzionato 2015,5,30 cade sotto giugno, se stai cercando maggio puoi cambiarlo al 2015, 4,30 –