Es gibt eine Menge Informationen über Zeitzonenanpassungen in PHP, aber ich habe keine Antwort gefunden, was genau ich wegen all dem Rauschen machen möchte.Anpassen der Zeitzone in PHP mit DateTime/DateTimeZone
Angesichts einer Zeit in einer Zeitzone, ich möchte es in die Zeit in einer anderen Zeitzone konvertieren.
This ist im Wesentlichen, was ich tun möchte, aber ich muss in der Lage sein, es nur mit den integrierten PHP-Bibliotheken, nicht PEAR Date zu tun.
Dies ist, was ich getan habe, aber es scheint immer mir zu geben, den Offset relativ zu GMT:
$los_angeles_time_zone = new DateTimeZone('America/Los_Angeles');
$hawaii_time_zone = new DateTimeZone('Pacific/Honolulu');
$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br/>", $date_time_los_angeles->format(DATE_ATOM));
$time_offset = $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br/>", $time_offset);
Dies ist die Ausgabe:
LA Time: 2009-09 -18T05: 00: 00-07: 00
Offset: -36000
ich 3 Stunden erwartet wurde (10.800 Sekunden). aber das '-7: 00' Ding sagt mir, dass es alles relativ zu GMT hält, was vielleicht erklärt, warum es mir den "absoluten" Offset gibt.
Wie bekomme ich nur den Versatz zwischen den beiden Zeitzonen ohne all diese GMT hoohah?
Danke.
UPDATE:
Ich fiel mir ein, dass ich dies tun könnte und bekommen, was ich will:
$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br/>", $date_time_los_angeles->format(DATE_ATOM));
$date_time_hawaii = new DateTime('2009-09-18 05:00:00', $hawaii_time_zone);
printf("Hawaii Time: %s<br/>", $date_time_hawaii->format(DATE_ATOM));
$time_offset = $los_angeles_time_zone->getOffset($date_time_los_angeles) - $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br/>", $time_offset);
Aber es fühlt sich mir peinlich. Wer weiß einen saubereren Weg, es zu tun?
Übrigens :), diese sind für PHP> = 5.3.0. – GZipp
Sie scheinen DST nicht zu berücksichtigen. Ich benutze die oben genannten Funktionen, um CST in GMT zu verwandeln, und alle meine Zeiten sind um 1 Stunde abgelaufen. –