Hi!
Dann nimm den Unix Timestamp - der ist Sekunden seit 1.1.1970, 0:00 GMT.
Das GMT daran ist mein Problem. time() (oder auch die Abfrage aus der DB) geben die Zeit als GTM zurück, bezogen auf die aktuelle Zeitzone.
Das heißt da ist die momentane eine Stunde bereits mit drin?!
Da ist im Grunde genommen nichts drin. Das "drin" kommt erst hinzu, wenn du auf lokale Zeit umrechnest. Dass der Unix-Timestamp so definiert ist, ist gut, denn sonst könnte man keinen weltweiten zeitlichen Abgleich vornehmen und wüsste auch nicht, auf welche Zeit genau sich nur 2:30 am Tage des Umstellens auf Normalzeit bezieht. Diese Information ergibt sich erst in der ausführlichen zeitzonenbezogenen Schreibweise: ... 2:30 MESZ oder MEZ. Das lässt sich dann aber nicht mehr mit einem simplen Integer abbilden, der deinen Forderungen nach Teilbarkeit auf 0:00:00 Lokalzeit nachkommt.
$time2 = $time - ($time % (24 * 3600));
Du machst neben den Zeitzonen auch noch den Fehler, von 24 Stunden pro Tag auszugenen. Das ist hierzulande derzeit gesetzlich nicht gegeben.
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?
Wie gesagt, der Unix-Timestamp bezieht sich immer auf UTC. Das Ermitteln eines Unix-Timestamps aus einem zeitzonenbezogenen Zeitpunkt muss den Offset dieser Zeitzone berücksichtigen, genauso wie eine Umrechnugn vom Timestamp in die lokale Zeit.
Vergiss einfach, dass du mit der Formel 24 * 3600 irgendwas Gescheites hinbekommst, dagegen wehrt sich schon die Sommerzeit.
Lo!