Datum vergleichen

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

  • Datum vergleichen

    Hallo Leute,

    bin noch PHP Anfänger.
    Bekomme ein Anreisetag und Abreisetag aus einem Formular.
    Wie kann ich dies vergleichen, um auf die Anzahl der Tage zu kommen?

    Wichtig: Es muss das Schaltjahr u. die Anzahl der Tage des jeweiligen Monats berücksichtigt werden.

    Danke schon im Voraus.

    by Lino

  • #2
    quick'n'dirty:

    rechne beide daten in sekunden um (mktime oder so), subtrahiere und teile durch 86400 (oder so) ....
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hi,

      habe ein bisschen rumprobiert. Leider kommen irgendwie immer 31 Tage raus... Hier mein Code:

      //Berechnung der Tage
      $sek_von=mktime(0,0,0,$monatnr_von,$_POST[Tag_von],2004);
      $sek_bis=mktime(0,0,0,$monatnr_bis,$_POST[Tag_bis],2004);
      $sek_summe=$sek_von-$sek_bis;
      $sek_division=$sek_summe/86400;
      $anzahl_tage=date("t",$sek_divion);

      --> $monatnr_von u. $monatnr_bis liefert eine zahl wie 1-12 f. den Monat.

      Vielen Dank schon im Voraus.

      by Lino

      Kommentar


      • #4
        hmm,

        schau mal, was t bei date() macht ....

        PHP-Code:
        $start explode(".""13.05.2003");
        $ente explode(".""27.05.2004");
        echo 
        round((mktime(000$ente[1], $ente[0], $ente[2]) - mktime(000$start[1], $start[0], $start[2])) / 86400)." Tage"
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Hi,

          upps. t gibt bei date die Anzahl der Tage eines Monats aus...

          Habe deinen Code Schnippsel eingefügt. Leider kommt nur als Ergebnis 0 raus.

          <php>$sek_von=explode(".", "01.01.2004");
          $sek_bis=explode(".", "02.02.2004");
          $anzahl_tage=round((mktime(0, 0, 0, $ente[1], $ente[0], $ente[2]) - mktime(0, 0, 0, $start[1], $start[0], $start[2])) / 86400);</php>

          Kommentar


          • #6
            War mein Fehler hatte vergessen die Variablen anzupassen. Klappt jetzt soweit.

            Ich möchte jetzt nur noch, statt des kompletten Datumstrings folgende Variablen einbauen können.

            $monatnr_von --> Monat 1-12
            $monatnr_bis

            $_POST[Tag_von]
            $_POST[Tag_bis]

            PHP-Code:
            $sek_von=explode(".""01.01.2004");
            $sek_bis=explode(".""02.02.2004");
            $anzahl_tage=round((mktime(000$sek_bis[1], $sek_bis[0], $sek_bis[2]) - mktime(000$sek_von[1], $sek_von[0], $sek_von[2])) / 86400); 

            Kommentar


            • #7
              welche Werte haben die Arrays $start und $ente?
              EDIT:
              vor dem kopieren auch mal drüber gucken

              Kommentar


              • #8
                Ich möchte jetzt nur noch, statt des kompletten Datumstrings folgende Variablen einbauen können.
                das sollte aber zu machen sein.

                guck dir mal an, was mk-time macht!!!

                Kommentar


                • #9
                  Habs jetzt umgebaut...

                  PHP-Code:
                  $anzahl_tage=round((mktime(000$_POST[Tag_bis], $monatnr_bis2004) - mktime(000$_POST[Tag_von], $monatnr_von2004)) / 86400); 
                  Anreisetag: 1.1.2004
                  Abreisetag: 1.2.2004

                  $_POST[Tag_von] = 1;
                  $_POST[Tag_bis] = 1;
                  $monatnr_von=1;
                  $monatnr_bis=2;

                  Ergebnis ist 1, müsste aber 31 sein.

                  Kommentar


                  • #10
                    also hast du dir mktime nicht angesehen. sonst würdest du die parameter in der richtigen reihenfolge angeben.

                    Kommentar


                    • #11
                      hmm,

                      ich finds auch irgendwie lustig, daß die tage ausm $_POST kommen, der monat einfach so in einer var steht, und das jahr sowieso festgelegt ist ....
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        kann ja durchaus sein.

                        aber dennoch sollte man in der lage sein, das ganze gemäß Manual anzugeben, wenn man den code schon hingeschissen bekommt.

                        Kommentar


                        • #13
                          Danke, es klappt.

                          Kommentar


                          • #14
                            warnung zu mktime()

                            ich hatte mal fehler bei bestimmten datum-konstellationen.

                            mktime() kann evtl. zu fehlern führen, wenn die tage über anfang/ende der sommerzeit gehen. probier das mal aus.

                            lösung: nicht mit mktime(), sondern mit gmmktime() arbeiten.
                            gruss oskar40

                            kapieren - nicht kopieren

                            Kommentar

                            Lädt...
                            X