Guten Abend allerseits,
ich habe mich in den letzten Tagen mit dem Thema PHP/MySQL und Zeitzonen befasst und bisher nur passiv in Foren mitgelesen, und habe jetzt noch eine Verständnisfrage, die ich mir so leider noch nicht beantworten konnte.
Da ich eine Webanwendung gestalte, die ggf. auf verschiedenen Servern in verschiedenen Zeitzonen laufen soll, geht es hauptsächlich um das Speichern der Zeit inklusive Zeitzone.
Ich bin jetzt zum Schluss gekommen, dass es wohl am einfachsten ist, per date_default_timezone_set('UTC'); sicherzustellen, dass beim Speichern der Zeitzone immer UTC verwendet wird (Voraussetzung: Serverzeit/Zeitzone muss richtig eingestellt sein - ist sie auch).
So kann ich also SICHER sein, dass alle zeiten, die im System bzw. in der Datenbank irgendwie vorkommen, UTC sind.
Ich habe mir dazu zum Testen gerade ein kleines Script geschrieben und bin jetzt etwas verwundert:
PHP-Code:
<?php
// Speichern
date_default_timezone_set('UTC');
$zeit = mktime(22,33,44,03,20,2010);
echo date("H:i:s", $zeit); //Ausgabe: 22:33:44
echo "<br>";
// Umrechnen
date_default_timezone_set('Europe/Berlin');
$jetzt = date("H:i:s", $zeit);
echo $jetzt; //Ausgabe: 23:33:44
?>
Ich mache hier nichts weiter, als einfach eine Zeit zu "erfinden", anschließend die Zeitzone zu ändern und die zuvor gespeicherte Zeit weder auszugeben.
Was mich wundert, sind die Ausgaben, die geliefert werden.
Woher weiß PHP von der unterschiedlichen Zeitzone?
Gehe ich richtig in der Annahme, dass PHP erkennt, dass die Zeit vorher im gleichen Script in einer anderen Zeitzone abgespeichert wurde?
Oder anders gefragt: Wenn meine $zeit aus einer MySQL-Abfrage kommt, würde sie dann auch umgerechnet werden?
Das würde ja voraussetzen, dass die Zeitzone mitgespeichert wurde.
Wäre um eine Auskunft sehr dankbar! :-)
Liebe Grüße
SyLo