Ankündigung

Einklappen
Keine Ankündigung bisher.

Abstand vom Datum

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • malabarista
    hat ein Thema erstellt Abstand vom Datum.

    Abstand vom Datum

    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 ?

  • malabarista
    antwortet
    Danke für den Tipp mit dem ROUND !

    Einen Kommentar schreiben:


  • Gast-Avatar
    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
    Weil
    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 
    
    ";
    
    ?>
    mfg ~dilemma~

    nachträglich korrigiert!!!

    Einen Kommentar schreiben:


  • malabarista
    antwortet
    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:


  • Gast-Avatar
    Ein Gast antwortete
    Vielleicht 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:


  • imported_Ben
    antwortet
    Dann solltest du die Differenz auf eine ganze Zahl runden.

    Einen Kommentar schreiben:


  • malabarista
    antwortet
    Das Problem ist, das s sich diese differenz nicht immer glatt durch 86400 teilen
    lässt.
    Manchmal kommen Brüche heraus.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Und wo ist jetzt das Problem?

    $differenz = $timestamp1 - $timestamp2;

    Gruß
    phpfan

    Einen Kommentar schreiben:


  • imported_Ben
    antwortet
    Bisschen subtrahieren und multiplizieren musst du .. mehr nicht.

    Einen Kommentar schreiben:

Lädt...
X