Zeitzone mit Sommerzeit-handling von PHP
Arbeite ich an einem Kalender-Anwendung. In diesem werden die Benutzer aus verschiedenen Zeit-Zonen erstellen/anzeigen Veranstaltungen.
Ich denke da an Folgen Sie der unten Methode zum speichern von Ereignis-Zeit in UTC-Zeit und zeigt Sie in Ihrer lokalen Zeit. Hinweis: der Benutzer hat Ihre bevorzugte Zeitzone-Einstellung.
Zu speichern event starten Zeit als UTC timestamp:
$timezone = new DateTimeZone( $user_timezone_name );
$utcOffset = $timezone->getOffset( new DateTime( $event_start_time_string_local ) );
$event_start_timestamp_local = maketime( $event_start_time_string_local );
//Now add/subtract $utcOffset to/from $event_start_timestamp_local to get event's start //time timestamp in UTC and save this result in DB.
Zu bekommen event Zeit startet, in der Benutzer-Zeitzone:
date_default_timezone_set( $user_timezone_name );
$eventTimeLocalTime = date("Y-m-d H:i:s", $event_start_timestamp_in_UTC );
Wo:
user_timezone_name is user's timezone setting.
event_start_time_string_local is event's start time string in local/civil time.
event_start_timestamp_in_UTC is event's start time timestamp in UTC.
Meine Fragen:
- Ob die PHP-APIs verwendet, die oben kümmern sich um die Sommerzeit für alle Regionen?
- Die Sommerzeit-die Zeit selbst ändert sich in verschiedenen Jahren, wie funktioniert PHP bekommt die Informationen über das? brauchen wir das upgrade PHP? Wenn ja, brauchen wir, um ein upgrade für alle oder bestimmte PHP-Bibliothek?
Referenzen:
- nicht-PHP-Datum-default-timezone-set-einstellen-auf-Sommerzeit
- get-Zeitzonen-offset-für-einer-bestimmten-Position
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist viel zu overcomplicating diese. Konvertieren zwischen zwei Zeitzonen mit
DateTime
, dies zu tun:Dieser wandelt die von einem Benutzer der lokalen Zeitzone zu UTC. Zu gehen die andere Weise herum, um die Zeit anzuzeigen, die in der Ortszeit des Anwenders, tauschen Sie die beiden Zeitzonen.
Ja, PHP kümmert sich um die Sommerzeit. Die notwendige Umwandlung Regeln sind Teil des PHP-installation. Sie können halten Sie auf dem neuesten Stand durch Update von PHP, oder durch die Aktualisierung der timezonedb: http://pecl.php.net/package/timezonedb.
'@12345...'
für UNIX-Zeitstempel.Ja php-api berücksichtigt DST. Die meisten der Zeit, können Sie sicher ausführen kann, Zeit, die Umwandlung der Art und Weise deceze gezeigt hatte. Das problem ist, dass es nicht immer möglich, machbar oder sinnvoll ist. Betrachten Sie folgenden Beispiel - in Polen (2013) on Oct 27th um 3 Uhr morgens Ihre Uhr verschoben wird um eine Stunde zurück zu switch zu standard-Zeit (offset UTC+01:00) am 31 März um 2 Uhr Uhr eingestellt wird vorwärts-1h-Schalter, um die Sommerzeit(offset UTC+02:00). Lassen Sie uns nun sehen, wie 'real-time' Zecken in Grenwich/UTC und wie die Konvertierung von PHP aus Europe/Warsaw UTC Werke:
Wie Sie sehen können, die zwischen 2Uhr-3Uhr gibt es keine Möglichkeit PHP-wissen kann, 'die' Stunde vor/nach dem Abgleich) es ist daher nicht zuverlässig konvertieren.
Hoffe, das hilft jemand in seine/Ihre Beratungen 😉