TDateTime und Unix Timestamp
-
hallo
ich habe leider das problem mit der konvertierung von einem unix timestamp in ein TDateTime und umgekehrt. ich weis es gibt die funktion UnixToDateTime und umgekehrt aber ich möchte ohne die beiden funktionen auskommen.
nun, ich mache für ein unix timestamp -> TDateTime folgendes:
(strtotime($datetime_str) / 86400) + 25569.0;und für ein TDateTime -> unix timestamp
($days - 25569.0) * 86400;leider aber weicht es jedoch um (ich glaube) 2 stunden nach hinten ab. ich vermute es liegt am nachkomma wert von 25569.0, der sowas wie 25569.08335 sein sollte (der nachkomma wert wurde manuell erraten und stimmt nicht ganz). oder was denkt ihr? wie berechne ich das nun genau, damit es funktioniert?
-
Hallo
Wenn es genau 2 Stunden sind dann ist es kein Rundungsfehler. Rundungsfehler im nachkommabereich würden sich nur in Minuten und Sekunden auswirken.
Stattdessen dürfte die Differenz die lokale Zeitzone sein : Unix-Timestamp ist in MEZ + Sommerzeit, der herauskommende TDateTime ist in GMT. Macht genau 2 Stunden.bis bald
akari
-
hm, aber in der php doc steht das strtotime GMT nutzt.
-
Hallo
Für PHP-Funktionen must du schon in einem PHP-Board fragen. Du hast ja nicht gesagt bei welcher Richtung die Differenz auftritt (Es könnte auch sein das beide Richtung je eine Stunde Differenz verursachen, und die Sommerzeit keine Rolle spielt). Zumal ich mich frage wo der Builder-Bezug ist, da du doch in PHP programmierst?
bis bald
akari
-
hallo akari. ja das ist immer so eine sache mit dem richtigen forum
ich entwickle eben mit dem C++ Builder und php und da es auch um TDateTime geht, dachte ich, ich bin hier mindestens zu 50% richtig
-
Hallo
Dann solltest du genauer erklären wie der Wert von TDateTime aus dem Builder in das PHP-Script kommt. Datenbank? Datei? Socket?
bis bald
akari
-
socket :xmas1:
irgend eine idee? wenn ich zwei stunden in tagen mit kommastellen angeben muss, wieviel genau wäre es dann?
-
also ich komme dem geheimnis langsam auf die spur. dazugerechnet muss in der tat, je nach datum, die sommer oder winterzeit. also eine stunde oder zwei. für mich heisst das also:
eine stunde = 0.041666666666666666666666666666667 tage
zwei stunden = 0.083333333333333333333333333333333 tagedas muss bei 25569 tagen windows/unix differenz dazu gerechnet oder abgezogen werden. ich glaube ich muss nur schauen in welcher zeitumstellung sich ein datum befindet, also ob in sommer oder winterzeit umstellung. weisst du per zufall wann das mathematisch genau ist?
das löst glaube ich mein problem. aber warum php das nicht automatisch dazu rechnet ist mir unklar. der C++ builder tut es scheinbar. oder es ist etwas völlig anderes worauf ich jetzt um 05:13 uhr nicht komme.
eine kleine sache finde ich dennoch komisch: die ergebnisse sind immer auf eine sekunde ungenau. also 12.08.2008 15:05:00 ergibt dann 12.08.2008 15:04:69