Hallo Dedlfix!
Ergänzung zu meiner Antwort von 19:27 Uhr:
Mir hat das jetzt keine Ruhe gelassen und ich habe eie weitere Stunde herumprobiert. Mit Hilfe einer zufällig gefundenen Seite, wo ich eine Funktion zu meiner Problematik entdeckt habe, löse ich mein Problem jetzt so:
Es bleibt dabei, dass CREATED und MODIFIED Spalten vom Typ 'Datetime' sind (damit auch innerhalb von SQL Querys Datums- und Zeitberechnungen durchgeführt werden) und mit einem 'UTC_TIMESTAMP()
' gefüllt werden, so dass dort der Zeitpunkt in UTC steht.
Und hier jetzt mein php Quelltext mit einer überdimensionalen Schritt-für-Schritt Kommentierung, damit Du siehst, was ich mir dabei gedacht habe bzw. wie ich das zu verstehen denke:
<?php
// Aus der DB wird ein Datetime-Zeitpunkt in UTC kommen.
// Deshalb wird die Zeitzpne jetzt auf UTC gestellt:
date_default_timezone_set('UTC');
// Jetzt kommt der Datetime-Zeitpunkt in UTC aus der DB: (Hier einfachkeitshalber direkt definiert.)
$utc_datetime="2012-10-24 12:51:43";
// Dieser UTC Zeitpunkt wird jetzt umgewandelt in einen UNIX Timestamp:
$unix_timestamp=strtotime($utc_datetime);
// Nun wird für den php Server auf jene Zeitzone umgestellt, in der man ausgeben möchte. In diesem Fall für Deutschland:
date_default_timezone_set('Europe/Berlin');
// Der vorher generierte UNIX Timestamp wird nun wieder in ein lesbares Datum umgewandelt.
// Weil der PHP Server aber weiß, dass der UNIX Timestamp ein UTC-Zeitpunkt war und wir zwischenzeitlich ja
// auf die mitteleuropäische Zeit gewechselt haben, wird der PHP Server diesen Zeitzonenunterschied automatisch korrigieren:
// Mit anderen Worten eine Umwandlung eines Zeitpunktes in der UTC Zone (Format: UNIX Timestamp) umgerechnet in den selben Zeitpunkt in Mitteleuropa (Format: Datum).
$datum=date('Y-m-d H:i:s',$unix_timestamp);
// Zur Kontrolle werden jetzt der Ausgangszeitpunkt und der umgerechnete Zeitpunkt kontrolliert:
// Die Ausgangszeit war "2012-10-24 12:51:43":
var_dump($utc_datetime);
echo"<br /><br />";
// Zu diesem Zeitpunkt war in Deutschland: "2012-10-24 14:51:43":
var_dump($datum);
?>
Das funktioniert _perfekt_ und ist genau das, was ich brauche! Es ist so simpel, berücksichtigt Sommer/Winterzeit und ein kurzes Austauschen der Zeitzone nach zB. 'Europe/Athens' würde auch sofort die korrekten Zeitpunkte für eine griechische Ausgabe bringen.
Diese Lösung kommt jetzt ohne irgend eine SQL eigene Umwandlung aus. Ich verwende weder das von mir ursprünglich vorgeschlagene 'mktime()
', noch das von Dir vorgeschlagene 'gmdate()
'. Ich habe auch bis jetzt keine Lösung gefunden, wie das mit 'gmdate()
' funktionieren soll.
Jetzt würde ich natürlich gerne wissen, was _Du_ zu dieser Lösung sagst. Und wie Du das mit 'gmdate()
' gelöst hättest.
Bzgl. der anderen Dinge, die Du geschrieben hast, werde ich demnächst noch was nachfragen.
MfG
Hugo Egon Balder