Kris: UTC Zeit konvertieren, Problem mit Sommer-/Winterzeit

Hallo,

Beim Initialisieren der Applikation wird mittels
date_default_timezone_set("UTC")
die Systemzeitzone auf UTC gesetzt.

Sämtliche Datumsangaben werden auch in der DB als UTC hinterlegt.
Nun möchte ich in der Ausgabe anhand eines Config-Parameters das Datum nach zb Europe/Berlin konvertieren.

$df = 'yyyy-MM-dd HH:mm:ss';  
$utc0date = "2012-02-21 18:20:10";  
  
$now = new \Zend_Date($utc0date);  
  
echo $now->getTimezone();  
echo "<br>".$now->toString($df)."<hr>";  
  
$now->setTimezone( "Europe/London" );  
echo "London:<br>".$now->toString($df)."<br>";  
  
$now->setTimezone( "Europe/Berlin" );  
// $now->setOptions(array('fix_dst' => false));  
echo "Berlin:<br>".$now->toString($df)."<br>";  
  
$now->setTimezone( "Asia/Manila" );  
echo "Manila:<br>".$now->toString($df)."<br>";

Die Ausgabe ist wie folgt:

UTC
2012-02-21 18:20:10
London:
2012-02-21 18:20:10
Berlin:
2012-02-21 19:20:10
Manila:
2012-02-22 02:20:10

Wie man sieht wird die Sommerzeit nicht beachtet.
Die Angabe setOption.. greift nicht, da PHP zuvor auf UTC gestellt wurde.

Ich finde einfach keine Lösung ohne irgendwelche Umwege ganz einfach anhand der UTC-Zeit die korrekte Zeit für Deutschland zu berechnen.
Irgendwelche Ideen/Tips*?

Auch wenn ich das Zend-Framework nutze, bin ich auch durchaus an einer reinen PHP-Loesung interessiert.

Vielen Dank,
Kris

* vor der Ausgabe systemweite Angaben wie date_default_timezone() etc zu setzen, und danach wieder zurückzustellen ist für mich keine Lösung.

  1. Hi,

    Die Ausgabe ist wie folgt:

    UTC
    2012-02-21 18:20:10
    London:
    2012-02-21 18:20:10
    Berlin:
    2012-02-21 19:20:10
    Manila:
    2012-02-22 02:20:10

    Wie man sieht wird die Sommerzeit nicht beachtet.

    Sieht man das?

    Bei einem Datum im tiefsten Winter (Februar) würde ich nicht erwarten, daß Sommerzeit eine Auswirkung hat.

    London ist im Winter bei derselben Zeit wie UTC, Berlin eine Stunde weiter. Die Philippinen machen m.W. keine Sommerzeit-Umstellung.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hi,

      Bei einem Datum im tiefsten Winter (Februar)..

      Ahrg.. so ein Mist aber auch!

      Dennoch musste ich feststellen, dass selbst Zend intern die Funktion
      date_default_timezone_set()
      nutzt.

      Mir missfällt die Änderung einer globalen Variable nur um ein einziges Datum zu berechnen. Die kann meines Erachtens recht ungewollte(/fatale) Auswirkungen mit sich ziehen (sofern noch andere Funktionen mit date_default_timezone_get arbeiten und das System grundsätzlich Daten in UTC erwartet).

      Es muss doch noch eine andere Möglichkeiten geben um zwischen UTC-Zeitzonen zu konvertieren?

      Vielen Dank,
      Kris