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

  • 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 ?

  • #2
    Bisschen subtrahieren und multiplizieren musst du .. mehr nicht.
    [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

    Kommentar


    • #3
      Und wo ist jetzt das Problem?

      $differenz = $timestamp1 - $timestamp2;

      Gruß
      phpfan

      Kommentar


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

        Kommentar


        • #5
          Dann solltest du die Differenz auf eine ganze Zahl runden.
          [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

          Kommentar


          • #6
            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~

            Kommentar


            • #7
              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 !

              Kommentar


              • #8
                >>> 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!!!

                Kommentar


                • #9
                  Danke für den Tipp mit dem ROUND !

                  Kommentar

                  Lädt...
                  X