Domanda

Abbastanza diretto:

PHP restituisce i fusi orari nel seguente formato:

"America/Los_Angeles"

Voglio convertirlo in:

-7

Ho trovato tanti codici per convertirlo, calcolando le differenze con funzioni personalizzate..ma come minimalista non posso credere che non ci sia un modo più semplice (forse una funzione datetime) per ottenere subito il valore..qualcuno sa di questo?

È stato utile?

Soluzione

$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime(null, $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;

Dimostrazione

Altri suggerimenti

PHP utilizza i fusi orari standard da il database del fuso orario IANA.

"America/Los_Angeles" lo è non lo stesso di -7.-7 è un "fuso orario", non un "fuso orario".Leggi "Fuso orario! = Offset" in il wiki del tag del fuso orario.

Considera che "America/Los_Angeles" rappresenta l'ora del Pacifico degli Stati Uniti, che è solo -7 durante l'ora legale del Pacifico (PDT).Il resto dell'anno è nel Pacific Standard Time (PST), che è -8.

Il codice fornito nella risposta di John ti fornirà correttamente l'offset utilizzato da un fuso orario per il attuale data e ora.Tieni presente che il valore cambierà a seconda di quando esegui il codice.

Inoltre, dovresti capire che mentre puoi determinare la differenza per un particolare fuso orario in un determinato momento, non è vero il contrario.Voi non può considera -7 come un fuso orario e aspettati che qualcuno sia in grado di dire che è l'ora legale del Pacifico.Considera che -7 si applica anche al Mountain Standard Time, che l'Arizona utilizza tutto l'anno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top