Question

Assez simple:

PHP renvoie les fuseaux horaires au format suivant :

"America/Los_Angeles"

Je veux le convertir en :

-7

J'ai trouvé de nombreux codes pour le convertir, en calculant les différences avec des fonctions personnalisées.mais en tant que minimaliste, je ne peux pas croire qu'il n'existe pas de moyen plus simple (peut-être une fonction datetime) pour obtenir la valeur immédiatement.quelqu'un est au courant de ça ?

Était-ce utile?

La solution

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

démo

Autres conseils

PHP utilise les fuseaux horaires standards de la base de données des fuseaux horaires de l'IANA.

"Amérique/Los_Angeles" est pas la même chose que -7.-7 est un "décalage de fuseau horaire", pas un "fuseau horaire".Lisez « Fuseau horaire ! = Décalage » dans le wiki des balises de fuseau horaire.

Considérez que "America/Los_Angeles" représente l'heure du Pacifique des États-Unis, qui n'est que de -7 à l'heure avancée du Pacifique (PDT).Le reste de l’année, l’heure est l’heure normale du Pacifique (PST), soit -8.

Le code fourni dans la réponse de John vous donnera correctement le décalage qu'un fuseau horaire utilise pour le actuel date et l'heure.Sachez que la valeur changera en fonction du moment où vous exécutez le code.

En outre, vous devez comprendre que même si vous pouvez déterminer le décalage pour un fuseau horaire particulier à tout moment, l’inverse n’est pas vrai.Toi ne peut pas traitez -7 comme fuseau horaire et attendez-vous à ce que quelqu'un soit capable de dire qu'il est l'heure avancée du Pacifique.Considérez que -7 s'applique également à l'heure normale des Rocheuses, que l'Arizona utilise toute l'année.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top