Tage zwischen Datum A und Datum B

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

  • Tage zwischen Datum A und Datum B

    Hi,
    ich versuche gerade ein script zu schreiben, was die Tage zwischen 2 Daten errechnet. Dafür wandle ich die Daten in Timestamps um und versuche diese dann /60 /60 /24 zu dividieren.
    PHP-Code:
    $test  =  strtotime("01.01.2001");
    $test2 =  strtotime("30.04.2001");
    $ende $test2 $test ;
    $ende $ende /60 /60 /24 ;
    print (
    $ende); 
    Das Ergebnis ist dann 118.958333333 .
    Eigendlich sollte es aber 120 sein.
    Kann mir jemand sagen, wie ich den "richtigen" Wert herausfinde?

    MfG Daether

  • #2
    schau dir mal mk-time an.

    berücksichtige auch schaltjahre und die winter/sommer umstellung.

    Kommentar


    • #3
      Re: Tage zwischen Datum A und Datum B

      Wenn die Calendar-Funktionen verfügbar sind, ist m.E. gregoriantojd() das einfachste.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Die suma deines vertrauens liefert dir sooo viele fertige codes.

        http://www.php-faq.de/q/q-datum-intervall.html

        Kommentar


        • #5
          Wenn du zum 01.01.2001 119 Tage dazuzählst, bist du beim 30.04.2001, insofern solltest du einfach ceil verwenden.

          Wenn der 01.01.2001 noch meitgezählt werden soll, zähle danach 1 dazu.
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            ok, ich habe es jetzt so versucht:
            PHP-Code:
                function zeitraum($anfang,$ende){
                    
                    print(
            $anfang."<br>".$ende."<br>");
                    
                    
            $anfang explode(".",$anfang);
                    
            $ende explode(".",$ende);

                                
                    
            $anfang  =  mktime(000$anfang[1], $anfang[0], $anfang[2]);
                    
            $ende    =  mktime(000$ende[1]  , $ende[0]  , $ende[2]);
                        
                    
            $ergebnis $anfang-$ende ;
                    
            $ergebnis $ergebnis /86400 ;  
                    
                    return (
            $ergebnis);       
                    
                } 
            Problem ist, dass bei deisen beiden Daten:
            02.01.1970
            31.12.1998
            Dieses Ergebnis rauskommt:
            -10590

            Kommentar


            • #7
              ähm, du nimmst ANFANG (kleinerer Wert) minus ENDE (größerer Wert) und wunderst dich über ein negatives Ergebnis?

              Kommentar


              • #8
                ,
                ok das habe ich übersehen.
                Aber wenn ich jetzt
                01.01.2000
                30.04.2000
                eingebe kommt
                119.958333333
                heraus.

                Aber eigendlich müsste dort 121 herauskommen.

                Kommentar


                • #9
                  Original geschrieben von Daether
                  ,
                  ok das habe ich übersehen.
                  Aber wenn ich jetzt
                  01.01.2000
                  30.04.2000
                  eingebe kommt
                  119.958333333
                  heraus.

                  Aber eigendlich müsste dort 121 herauskommen.
                  Himmelherrgottsackzefix, nein!

                  Es sollte 120 rauskommen.
                  Wenn du 121 haben möchtest, willst du auch bei 02.01.2000 - 01.01.2000 als Ergebnis 2 haben, oder?
                  Damit hättest du dann aber nicht die Differenz zwischen beiden Daten ausgerechnet, sondern den Anfangstag noch mitgenommen und de facto die Differenz zwischen 02.01.2000 und 31.12.1999 ausgerechnet.

                  Wenn du 7 - 5 rechnest, kommt ja auch 2 raus und nicht 3.

                  Was bitte spricht denn gegen meinen Vorschlag?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    habe jetzt deinen genommen, allerdings mit round(). Da ich auch werte kriege wie 119.978 die dann zu 121 werden sollten.

                    Danke nochmal

                    Kommentar


                    • #11
                      Ich würde ceil nehmen, round macht dir aus 119,2345 nämlich 119, ceil jedoch macht 120 draus
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        ja, aber ceil macht auch aus 120.01, eine 121.

                        Kommentar


                        • #13
                          Eben.

                          Wenn es 120,01 Tage sind, willst du dann als Ergebnis "120 ganze Tage" oder "121 angefange Tage" haben?

                          Handwerker nehmen meistens letzteres (x€ je angefangene Zeiteinheit)
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar

                          Lädt...
                          X