Zeit Berechnen - z.B."00:30:00" + "00:15:15"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeit Berechnen - z.B."00:30:00" + "00:15:15"

    Hallo,

    möchte eine Zeit Berechnen in folgendem Format (H:i:s).

    00:30:00 + 00:15:15 = 00:45:15

    Der Code dazu sollte eigentlich folgender sein:

    PHP Code:
    $Z1 strtotime("00:30:00");
    $Z2 strtotime("00:15:15");
    $Z3 $Z1 $Z2;
    $total gmdate("H:i:s",$Z3); 
    Problem ist nur das er mir diesen Fehler ausgibt:

    Warning: gmdate() [function.gmdate]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970
    Bedingt durch ein Windows Bug. Mein WebServer läuft auf Windows 2000 mit PHP Version 5.1.0b2. Das muss doch trotz Bug irgendwie realisierbar sein.

    Weiss jemmand Rat?

    gruß

    Michael

  • #2
    Re: Zeit Berechnen - z.B."00:30:00" + "00:15:15"

    PHP Code:
    $Z1 explode(':''00:30:00');
    $Z2 explode(':''00:15:15');
    $Z3['s'] = $Z1[2] + $Z2[2];
    if (
    $Z3['s'] > 59) { $Z3['s'] -= 60$Z3['i'] = 1; }
    $Z3['i'] += $Z1[1] + $Z2[1];
    if (
    $Z3['i'] > 59) { $Z3['i'] -= 60$Z3['H'] = 1; }
    $Z3['H'] += $Z1[0] + $Z2[0];
    $total implde(':'$Z3); 
    So gehts überall, denn ex-/implode sind OS-unabhängig und der Rest ist nur Arithmetik.
    EDIT:
    richtig, die Überträge sollte man auch mitnehmen, nicht nur berechnen
    Last edited by onemorenerd; 10-08-2006, 00:36.

    Comment


    • #3
      im prinzip richtig, aber die überträge in $Z3 auch addieren, und vorher $Z3 nullsetzen.
      EDIT:
      es fehlt noch das Nullsetzen, oder als Alternative error_reporting(e_none);
      - oder kürzer das Umstellen der Ueberträge.

      Last edited by nix_wie_weg; 10-08-2006, 12:15.

      Comment


      • #4
        Was ihr da macht ist auch Quatsch. Lasst euch doch mal $Z1 und $Z2 ausgeben! Das sind Timestamps vom heutigen Tag um 00:30:00 und 00:15:15. Wenn man die beiden addiert, dann kriegt man einen Integer Overflow und landest im negtiven Bereich. Daher die Warnung das der Timestamp kleiner 0 ist, was PHP unter Windows aber ab Version 5.1.0 eigentlich unterstützt.
        Ist das bei dir noch eine Beta-Version?

        PHP Code:
        $Z3 strtotime('+15 Minutes 15 Seconds'strtotime('00:30:00')); 
        hopka.net!

        Comment


        • #5
          Original geschrieben von Hopka
          Was ihr da macht ist auch Quatsch. Lasst euch doch mal $Z1 und $Z2 ausgeben! [/PHP]
          Der Quatsch besteht in diesem Fall aber darin, dass Du das $Z1 vom op und das $Z1 vom Antworter vermischst. Was soll ausgegeben werden, das erste oder das zweite??

          Comment


          • #6
            Hmm, stimmt. Alles nach dem 1. Satz bezieht sich eigentlich nur auf den Threadersteller. Bei dem ist es Quatsch, weil er die falschen Timestamps hat. Bei onemorenerd ist es Quatsch weil es so grenzenlos kompliziert ist.
            hopka.net!

            Comment


            • #7
              Die Idee des Antworters ist völlig richtig: Ein gewöhnlicher babylonisch-assyrischer Addierer (für nicht Antike-Forscher, im 60iger System).

              Comment


              • #8
                Hallo Ihr,

                danke mal für eure Infos! Hab's mal ausbrobiert aber es gibt irgendwo einen Fehler.

                @ nix wie weg: was meinst Du damit $Z3 auch addieren, und vorher $Z3 nullsetzen?

                Wenn ich diese Zeiten zusammen zähle erhalte ich 46:38:44
                • 03:32:53
                  01:00:59
                  00:00:59
                  01:15:49
                  01:01:09
                  03:52:00
                  02:58:30


                Was muss ich jetzt genau abändern beim Source von onemorenerd?


                gruß

                Michael

                Comment


                • #9
                  Original geschrieben von migronet
                  @ nix wie weg: was meinst Du damit $Z3 auch addieren, und vorher $Z3 nullsetzen?

                  Wenn ich diese Zeiten zusammen zähle erhalte ich 46:38:44
                  • 03:32:53
                    01:00:59
                    00:00:59
                    01:15:49
                    01:01:09
                    03:52:00
                    02:58:30


                  Was muss ich jetzt genau abändern beim Source von onemorenerd?


                  gruß

                  Michael
                  Dann hast Du falsch programmiert oder gerechnet, und hast auch nicht das gefragt, was Du jetzt fragst.

                  Am besten rechnest Du von hand das richtige Resultat aus.

                  Das Source Skript von onemorenerd änderst Du danach genau ab (am Schluss,versteht sich):
                  $Z3='...richtiges Resultat einfügen...';

                  PS die letzte Stelle muss eine '9' sein, wahrscheinlich hast Du die Zahlen falsch explodiert und deswegen gibt es an der letzten Stelle bloss eine '4'.
                  Last edited by nix_wie_weg; 10-08-2006, 14:39.

                  Comment


                  • #10
                    Hab den Fehler gefunden...

                    Die Implode Funktion war das Problem der hat die Sekunden zuerst dann die Minuten dann die Stunden...



                    PHP Code:

                    $Z1 
                    explode(':'$minutes);
                    $Z2 explode(':'$totalminutes);

                    $Z3['s'] = $Z1[2] + $Z2[2];
                    if (
                    $Z3['s'] > 59){ 
                        
                        
                    $Z3['s'] = $Z3['s']-60
                        
                    $Z3['i'] = 1

                    }
                        
                    $Z3['i'] = $Z1[1] + $Z2[1];
                    if (
                    $Z3['i'] > 59){ 
                        
                    $Z3['i'] = $Z3['i']-60
                        
                    $Z3['H'] = 1
                    }

                    $Z3['H'] = $Z1[0] + $Z2[0];

                    $totalminutes $Z3['H'] . ":" $Z3['i'] . ":" $Z3['s']; 

                    Comment


                    • #11
                      Original geschrieben von migronet
                      [B]Hab den Fehler gefunden...

                      Die Implode Funktion war das Problem der hat die Sekunden zuerst dann die Minuten dann die Stunden...

                      B]
                      Das hast Du gut gefunden. jetzt hast du nur noch das Problem dass er falsch rechnet.

                      Comment


                      • #12
                        Das Script rechnet jetzt richtig!

                        Comment


                        • #13
                          wieviel geben deine 7 Zahlen jetzt?

                          Comment

                          Working...
                          X