Ich möchte gerne die Differenz zwischen zwei
Tagen berechnen. Beide liegen als Timestamp vor.
Muss ich da die Umrechnung mit julianischem Kalender verwenden
oder gibt es eine andere Möglichkeit ?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Abstand vom Datum
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ein Gast antwortete>>> Datums_Differenz in Tagen <<<
Das unten aufgeführte Script zeigt dir folgendes Ergebnis:
Code:a) 1109631600 = 01.03.2005 00:00:00 1112306400 = 01.04.2005 00:00:00 2674800 / (60*60*24) = 30.958333333333 Tage b) 1128117600 = 01.10.2005 00:00:00 1130799600 = 01.11.2005 00:00:00 2682000 / (60*60*24) = 31.041666666667 Tage
a)im März von 'Winterzeit' auf 'Sommerzeit' umgeschaltet wird, gibt es hier einen Tag, der 23 Stunden hat.
b)im Oktober von 'Sommerzeit' auf 'Winterzeit' umgeschaltet wird, gibt es hier einen Tag, der 25 Stunden hat.
Wenn du also INTVAL(($ts2 - $ts1)/(60*60*24)) zum Berechnen der Datums_Differenz verwendest,
erhälst du im Fall a) ein falsches Ergebnis!
Du solltest besser ROUND(($ts2 - $ts1)/(60*60*24)) verwenden!
Und:
Das Ganze funktioniert auch nur dann korrekt,
wenn alle timestamps generell mit der gleichen Uhrzeit generiert werden!
Code:<HR><HR> <?php $ts1 = mktime(0,0,0, 3,1,2005); echo "$ts1 = " .date('d.m.Y H:i:s',$ts1) ." "; $ts2 = mktime(0,0,0, 4,1,2005); echo "$ts2 = " .date('d.m.Y H:i:s',$ts2) ." "; print ($ts2 - $ts1) .' / (60*60*24) = '. ($ts2 - $ts1)/(60*60*24) ." Tage "; $ts1 = mktime(0,0,0, 10,1,2005); echo "$ts1 = " .date('d.m.Y H:i:s',$ts1) ." "; $ts2 = mktime(0,0,0, 11,1,2005); echo "$ts2 = " .date('d.m.Y H:i:s',$ts2) ." "; print ($ts2 - $ts1) .' / (60*60*24) = '. ($ts2 - $ts1)/(60*60*24) ." Tage "; ?>
nachträglich korrigiert!!!
Einen Kommentar schreiben:
-
korrekt.
Mich hatte nur verblüftt, dass obwohl ich die timestamps jeweils mit 0 Uhr erzeugt hatte ,
hinterher Brüche herauskamen. Aber dann werde ich anschliessend nur ein (int) machen.
Das ist wohl schneller als die Umrechnung in gregor. kalender.
Dankeschön !
Einen Kommentar schreiben:
-
Ein Gast antworteteVielleicht meint er ja so etwas:
Code:<?php $ts1 = mktime(23,59,59,12, 31, 2005); echo date("d.m.Y H:i:s",$ts1) ." "; $ts2 = mktime( 0, 0, 0, 1, 1, 2006); echo date("d.m.Y H:i:s",$ts2) ." "; $datum_1 = gregoriantojd(date("n",$ts1),date("j",$ts1),date("Y",$ts1)); $datum_2 = gregoriantojd(date("n",$ts2),date("j",$ts2),date("Y",$ts2)); echo "Differenz in Tagen = ". ($datum_2 - $datum_1); ?>
~dilemma~
Einen Kommentar schreiben:
-
Dann solltest du die Differenz auf eine ganze Zahl runden.
Einen Kommentar schreiben:
-
Das Problem ist, das s sich diese differenz nicht immer glatt durch 86400 teilen
lässt.
Manchmal kommen Brüche heraus.
Einen Kommentar schreiben:
-
Ein Gast antworteteUnd wo ist jetzt das Problem?
$differenz = $timestamp1 - $timestamp2;
Gruß
phpfan
Einen Kommentar schreiben:
-
Bisschen subtrahieren und multiplizieren musst du .. mehr nicht.
Einen Kommentar schreiben:
Einen Kommentar schreiben: