Hallo,
Dann nimm den Unix Timestamp - der ist Sekunden seit 1.1.1970, 0:00 GMT.
Das GMT daran ist mein Problem.
warum ist das ein Problem? - Und GMT ist formal nicht richtig; es ist UTC.
time() (oder auch die Abfrage aus der DB) geben die Zeit als GTM zurück, bezogen auf die aktuelle Zeitzone.
Nein, UTC ist eben *nicht* auf irgendeine Zeitzone bezogen.
Das heißt da ist die momentane eine Stunde bereits mit drin?!
Nein, time() liefert jetzt (um etwa 23.30h MEZ) einen Timestamp, der 22.30h entspricht. Und zwar überall, egal ob in Buxtehude, in Nowosibirsk oder in Cienfuegos. Also unabhängig von der jeweiligen Zeitzone.
Mein Problem:
$time = time();
print date("Y-m-d H:i:s", $time);
--> 2011-01-22 21:27:01
Ja, date() rechnet den Timestamp auf die lokalen Zeitzone um.
$time2 = $time - ($time % (24 * 3600));
print date("Y-m-d H:i:s", $time2);
--> 2011-01-22 01:00:00
Auch klar - wenn du den Timestamp auf 00.00h UTC reduzierst und *dann* auf Ortszeit umrechnest, bekommst du 01.00h MEZ.
Hier wärs recht nett wenn ich null Uhr bekäme, was mit "Sekunden seit 1.1.1970" ja auch der Fall sein sollte. Nur ist hier halt die eine Stunde aus der Zeitzome mit drin.
Im Gegenteil, sie ist eben *nicht* mit drin. Erst mit der Umwandlung durch date() wird die Angabe wieder auf Ortszeit umgerechnet.
Ich frag mich auch was tatsächlich in der Datenbank steht. Kommts da auch auf die Zeitzone an, in was die gespeicherte Zeit dann umgerechnet wird?
Hoffentlich nicht.
Ciao,
Martin
Alle Tage sind gleich lang. Aber unterschiedlich breit.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(