Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitdifferenz inklusive Jahre ausgeben.

Einklappen

Neue Werbung 2019

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

  • Zeitdifferenz inklusive Jahre ausgeben.

    Hi,

    ich habe zwei Daten (12.04.2010 12:30:00) wo zwischen ich gerne die Zeitdifferenz ausgeben möchte. Nun will ich aber nicht nur auf Tage, Minuten, Sekunden runterbrechen, sondern auch auch Jahre und Monate. Wie kann ich das vernünftig machen, das zum Beispiel der 12.04.2010 und der 12.10.2008 immer 1 1/2 Jahre von ein ander entfernt sind ?

    Vielen Dank für die Tipps.

    Gruß kami


  • #2
    Hi.

    Ich würde das mit Timestamps machen. Die beiden Werte kannst Du dann voneinander subtrahieren. Hier mal ein kleines Beispiel für Tagesdifferenzen berechnen:

    Tage zwischen zwei Datumsangaben ermitteln

    und schau Dir mal mtkime für Timestamps an:

    PHP: mktime - Manual

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      DateTime::diff

      Kommentar


      • #4
        Hi,

        das ist die richtige Funktion dafür :

        PHP-Code:
        <?php
        function date_diff($d1$d2){
        /* compares two timestamps and returns array with differencies (year, month, day, hour, minute, second)
        */
          //check higher timestamp and switch if neccessary
          
        if ($d1 $d2){
            
        $temp $d2;
            
        $d2 $d1;
            
        $d1 $temp;
          }
          else {
            
        $temp $d1//temp can be used for day count if required
          
        }
          
        $d1 date_parse(date("Y-m-d H:i:s",$d1));
          
        $d2 date_parse(date("Y-m-d H:i:s",$d2));
          
        //seconds
          
        if ($d1['second'] >= $d2['second']){
            
        $diff['second'] = $d1['second'] - $d2['second'];
          }
          else {
            
        $d1['minute']--;
            
        $diff['second'] = 60-$d2['second']+$d1['second'];
          }
          
        //minutes
          
        if ($d1['minute'] >= $d2['minute']){
            
        $diff['minute'] = $d1['minute'] - $d2['minute'];
          }
          else {
            
        $d1['hour']--;
            
        $diff['minute'] = 60-$d2['minute']+$d1['minute'];
          }
          
        //hours
          
        if ($d1['hour'] >= $d2['hour']){
            
        $diff['hour'] = $d1['hour'] - $d2['hour'];
          }
          else {
            
        $d1['day']--;
            
        $diff['hour'] = 24-$d2['hour']+$d1['hour'];
          }
          
        //days
          
        if ($d1['day'] >= $d2['day']){
            
        $diff['day'] = $d1['day'] - $d2['day'];
          }
          else {
            
        $d1['month']--;
            
        $diff['day'] = date("t",$temp)-$d2['day']+$d1['day'];
          }
          
        //months
          
        if ($d1['month'] >= $d2['month']){
            
        $diff['month'] = $d1['month'] - $d2['month'];
          }
          else {
            
        $d1['year']--;
            
        $diff['month'] = 12-$d2['month']+$d1['month'];
          }
          
        //years
          
        $diff['year'] = $d1['year'] - $d2['year'];
          return 
        $diff;    
        }

        $born_date mktime(6,30,0,7,24,2008);
        $date_diff_array date_diff($born_datetime());
        print_r($date_diff_array);
        ?>
        Vielen DAnk für die Hilfe

        Gruß kami

        Kommentar


        • #5
          Sieht auf den ersten Blick erstmal ziemlich unsinnig aus.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Also Unix-Zeitstempel sind denkbar ungünstig, rechne lieber die einzelnen Parameter (Jahre, Monat, Tage, ..) einzeln durch und schieb bei Überhang den Wert in die nächste Ebene. Mach es einfach auf dem Papier mit dem ungünstigsten Beispiel: Silvester 1999 und Neujahr 2000.

            Edit: Die Funktion von kami scheint zu funktionieren. date_diff() würde ich sie nun aber gerade nicht nennen (can not redeclare), die gibts nämlich schon
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              Zitat von Chriz
              Also Unix-Zeitstempel sind denkbar ungünstig...
              Warum?
              Hätt' ich auch verwendet, wenn ich ehrlich bin...
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Weil du damit nur Tage berechnen kannst, aber davon nicht auf Monate oder Jahre schließen kannst, zumindest nur ungefähr.
                "Mein Name ist Lohse, ich kaufe hier ein."

                Kommentar


                • #9
                  Das stimmt... Hast Recht. Hatte ich nicht dran gedacht!
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar

                  Lädt...
                  X