Zeitzone mit DST-Behandlung von PHP
Ich arbeite an einer Kalenderanwendung. In diesem Bereich können Benutzer aus verschiedenen Zeitzonen Ereignisse erstellen / anzeigen. Ich denke, die folgende Methode zu befolgen, um Ereigniszeit in UTC zu speichern und sie in der Ortszeit des Benutzers anzuzeigen. Hinweis: Der Benutzer hat seine bevorzugte Zeitzoneneinstellung.
So speichern Sie die Startzeit des Ereignisses als UTC-Zeitstempel:
$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.
So ermitteln Sie die Startzeit des Ereignisses in der Zeitzone des Benutzers:
date_default_timezone_set( $user_timezone_name );
$eventTimeLocalTime = date("Y-m-d H:i:s", $event_start_timestamp_in_UTC );
Woher:
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 oben verwendeten PHP-APIs die Sommerzeit für alle Regionen berücksichtigen?Die DST-Zeit selbst ändert sich in verschiedenen Jahren. Wie erhält PHP Informationen dazu? Müssen wir PHP aktualisieren? Wenn ja, müssen wir alle oder bestimmte PHP-Bibliotheken aktualisieren?Verweise: -Tut-PHP-Datum-Standard-Zeitzone-Set-Anpassen-auf-Sommerzeit - get-timezone-offset-for-a-given-location