Frage

Ziemlich einfach:

PHP gibt Zeitzonen im folgenden Format zurück:

"America/Los_Angeles"

Ich möchte es umwandeln in:

-7

Ich habe viele Codes gefunden, um es zu konvertieren und Unterschiede mit benutzerdefinierten Funktionen zu berechnen.Aber als Minimalist kann ich nicht glauben, dass es keinen einfacheren Weg (vielleicht eine Datetime-Funktion) gibt, den Wert sofort zu ermitteln.Weiß jemand davon?

War es hilfreich?

Lösung

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

Demo

Andere Tipps

PHP verwendet die Standardzeitzonen von die IANA-Zeitzonendatenbank.

„Amerika/Los_Angeles“ ist nicht das gleiche wie -7.-7 ist ein „Zeitzonenoffset“, keine „Zeitzone“.Lesen Sie „Zeitzone != Offset“ in das Zeitzonen-Tag-Wiki.

Berücksichtige das "America/Los_Angeles" stellt die US-Pazifikzeit dar, die während der Pacific Daylight Time (PDT) nur -7 beträgt.Den Rest des Jahres herrscht die Pacific Standard Time (PST), also -8.

Der in Johns Antwort bereitgestellte Code gibt Ihnen korrekt den Offset an, den eine Zeitzone für verwendet aktuell Datum (und Uhrzeit.Beachten Sie, dass sich der Wert abhängig davon ändert, wann Sie den Code ausführen.

Sie sollten sich außerdem darüber im Klaren sein, dass Sie zwar den Offset für eine bestimmte Zeitzone zu einem bestimmten Zeitpunkt bestimmen können, das Gegenteil jedoch nicht der Fall ist.Du kann nicht Behandeln Sie -7 als Zeitzone und erwarten Sie, dass jemand erkennen kann, dass es pazifische Sommerzeit ist.Bedenken Sie, dass -7 auch für die Mountain Standard Time gilt, die in Arizona das ganze Jahr über gilt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top