Abstand zwischen 2 Daten berechnen, Fehler

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

  • Abstand zwischen 2 Daten berechnen, Fehler

    Hallo!
    Ich versuche den Abstand zweier Daten in Tagen zu berechnen.
    Ich lasse mir die Daten anzeigen:

    2006-05-04 10:33:29

    2006-05-01 10:32:51

    sind eindeutig 3 Tage Unterschied, als Ergebniss bekomme ich dennoch immer nur 1
    auch wenn es der gleiche Tag ist.
    Das ist der code:

    PHP-Code:
    $date2=$row['DateTime'];
       if (
    $row['Intervall']==1)
       {
        echo 
    "<p />".$date1."<p />";
        echo 
    "<p />".$date2."<p />";
       
    $days date('j'$date1 $date2);    //täglich
       
    }
       echo 
    $days
    das gleiche möchte ich dann noch mit Monaten und Wochen machen, hätte da einfach das j durch n bzw. W ersetzt.
    Was ist der Fehler?

  • #2
    Re: Abstand zwischen 2 Daten berechnen, Fehler

    versuche es mal so:

    PHP-Code:
    $anfang date('YmdHis',$start); // 20060501103251
    $ende date('YmdHis',$end); // 20060504103329

    // Dann nur noch die Differenz berechnen lassen und aufrunden.
    // Oder als Zeitangabe ausgeben lassen zb. Diff: 3 Tage 2 Stunden 4 Sekunden usw. 
    Sers
    Der Boris
    Zuletzt geändert von boris-schneider; 04.05.2006, 10:49.

    Kommentar


    • #3
      Ähhh....
      Gehts noch?

      Der eine zieht einen String nach dem Muster "Y-M-D H:i:s" vom anderen ab, der nächste kommt mit "YmdHis", und dann wundert man sich, daß nur scheiß rauskommt.

      @Maximus-Caesar: Das Intervall berechnest Du am besten mit Unix- Timestamps (Anzahl Sekunden seit dem 1.1.1970). Du kannst Dir das Datum mit der Funktion UNIX_TIMESTAMP direkt als Timestamp aus der Datenbank holen.
      Zuletzt geändert von pekka; 04.05.2006, 12:22.

      Kommentar


      • #4
        Original geschrieben von pekka
        Ähhh....
        Gehts noch?

        Der eine zieht einen String nach dem Muster "Y-M-D H:i:s" vom anderen ab, der nächste kommt mit "YmdHis"
        erm,
        jede date(); funktion wird mit folgendem wert gefüttert: 1144430763, demnach ist mein ansatz nicht ganz falsch

        Trotzalledem war es nur ein ungetesteter Ansatz
        Zuletzt geändert von boris-schneider; 04.05.2006, 15:36.

        Kommentar


        • #5
          Ich komm damit nicht so ganz klar...
          kann mir noch jemand nen Ansatz geben, und was ich bei Wochen bzw. Monaten machen muss?

          Kommentar


          • #6
            Also, ich mach das jetzt so:
            PHP-Code:
            $date1 $row['DateTime'];
                
            $date2 mktime(0,0,0,date('m'),date('d'),date('Y'));
                
            $days Round((($date2-$date1)/86400), 0) ; 
            Für Tage funktioniert das bestens, ebenso für Wochen. Doch wie mache ich das mit Monaten? Nicht jeder Monat hat gleich viele Tage!

            Kommentar


            • #7
              richtig.

              aber du willst die ausgabe ja in monaten haben. also musst du auch definieren, was ein monat ist.

              Kommentar


              • #8
                kannst mir mal zeigen wie du das meinst?
                In Sekunden Angeben, wies bei tagen und Wochen geht bringt ja nichts...

                Kommentar


                • #9
                  Original geschrieben von maximus Caesar
                  In Sekunden Angeben, wies bei tagen und Wochen geht bringt ja nichts...
                  Wieso nicht ?, die sekunde ist doch der Ausgangspunkt von allem!

                  Kommentar


                  • #10
                    Das schon, aber nicht jeder Monat hat 31 Tage...
                    Das sollte berücksichtigt werden

                    Kommentar


                    • #11
                      Der Post von pekka hat einen nützlichen Link den man mal besuchen sollte

                      Bin heute Mittag auf folgendes Script gestossen, und vielleicht hilft es dir ja weiter dir was eigenes und entsprechend angepasstes zu scripten

                      PHP-Code:
                      function diffrence($date_one$date_two$unit "second"$precision 4) {

                          
                      //Building the Unit for $unit
                          
                      switch($unit) {
                          case 
                      "second":
                              
                      $q 1;
                              break;
                          case 
                      "minute":
                              
                      $q 60;
                              break;
                          case 
                      "hour":
                              
                      $q 60 60;
                              break;
                          case 
                      "day":
                              
                      $q 60 60 24;
                              break;
                          case 
                      "week":
                              
                      $q 60 60 24 7;
                              break;
                          case 
                      "month":
                              
                      $q 60 60 24 30;
                              break;
                          case 
                      "year":
                              
                      $q 60 60 24 360;
                              break;
                          default:
                              
                      $q 1;
                          }

                          
                      //dividing with substr()
                          //first Date
                          
                      $year_one     substr($date_one04);
                          
                      $month_one     substr($date_one52);
                          
                      $day_one     substr($date_one82);
                          
                      $hour_one     substr($date_one112);
                          
                      $minute_one    substr($date_one142);

                          
                      //second Date
                          
                      $year_two     substr($date_two04);
                          
                      $month_two     substr($date_two52);
                          
                      $day_two     substr($date_two82);
                          
                      $hour_two     substr($date_two112);
                          
                      $minute_two    substr($date_two142);

                          
                      //making Timestamps with mktime()
                          
                      $datum_one mktime($hour_one$minute_one0$month_one$date_one$year_one);
                          
                      $datum_two mktime($hour_two$minute_two0$month_two$date_two$year_two);

                          
                      //returns the diffrence in $unit, all the same which date is bigger
                          
                      if($datum_one $datum_two) {
                              return 
                      round(($datum_one $datum_two) / $q$precision);
                          
                      //end if
                          
                      } else {
                              return 
                      round(($datum_two $datum_one) / $q$precision);
                          
                      //end else
                          
                      }
                      //function diffrence: end
                      }

                      //Datum 1
                      $date_1 "2006-05-10 15:30";
                      //Datum 2
                      $date_2 "2006-05-15 15:30";

                      //Die Ausgaben
                      echo diffrence($date_1$date_2"second"4) . "&nbsp;Sekunden Unterschied. <br />";
                      echo 
                      diffrence($date_1$date_2"minute"4) . "&nbsp;Minute(n) Unterschied. <br />";
                      echo 
                      diffrence($date_1$date_2"hour"4) . "&nbsp;Stunde(n) Unterschied. <br />";
                      echo 
                      diffrence($date_1$date_2"day"4) . "&nbsp;Tag(e) Unterschied. <br />";
                      echo 
                      diffrence($date_1$date_2"month"4) . "&nbsp;Monat(e) Unterschied. <br />";
                      echo 
                      diffrence($date_1$date_2"year"4) . "&nbsp;Jahr(e) Unterschied. <br />"
                      Zuletzt geändert von boris-schneider; 04.05.2006, 17:39.

                      Kommentar


                      • #12
                        Super! Danke!
                        werds mir anpassen!

                        Kommentar


                        • #13
                          Habs jetzt einfach mal komplett übernommen, ums auszuprobieren. ich rufs in ner funktion auf, die in der gleiche Datei ist.
                          Die funktion oben steht über meiner.

                          Für diese beiden Zeilen:
                          PHP-Code:
                              $datum_one mktime($hour_one$minute_one0$month_one$date_one$year_one);
                              
                          $datum_two mktime($hour_two$minute_two0$month_two$date_two$year_two); 
                          Bekomme ich diese Fehlermeldung:

                          Warning: mktime() expects parameter 1 to be long, string given in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 118

                          Warning: mktime() expects parameter 1 to be long, string given in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 119
                          Das Datum erstelle ich so:

                          PHP-Code:
                          $date11 $row['DateTime'];
                              
                          $date12 mktime(0,0,0,date('m'),date('d'),date('Y'));
                              
                          $date1=date("Y-m-d H:i"$date11);
                              
                          $date2=date("Y-m-d H:i"$date12); 
                          Zuletzt geändert von maximus Caesar; 04.05.2006, 18:00.

                          Kommentar


                          • #14
                            Original geschrieben von maximus Caesar
                            Bekomme ich diese Fehlermeldung:
                            Wer kein Englisch versteht, geschweigedenn Fehlermeldungen lesen kann, sollte die Finger von PHP lassen !

                            Kommentar


                            • #15
                              Ich verstehe schon, das der erste Parameter Lang, und n String sein soll, nur seh ich nich, wie ich den Fehler beheben kann!

                              Fehlermeldung sieht jetzt so aus:
                              Notice: A non well formed numeric value encountered in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 118

                              Notice: A non well formed numeric value encountered in C:\Programme\XAMPP\xampp\htdocs\bank\sessionhelpers.inc.php on line 119
                              Wie soll ich den Setzen des es richtig verstanden wird?
                              Wie ichs bis jetzt mache steht oben!

                              Habs auch mit den Werten die oben bei der funktions tehen probiert, die bringen ebenfals den Fehler!
                              Zuletzt geändert von maximus Caesar; 04.05.2006, 18:05.

                              Kommentar

                              Lädt...
                              X