Zeitberechnung mit Umformatierung? (Tausendstel)

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

  • Zeitberechnung mit Umformatierung? (Tausendstel)

    Ich habe ein "kleines" Problem mit einem Wert $daten[Zeit].
    Da es leider keine Tausendstel in der PC(PHP) Welt gibt (?), trage ich meine Zeiten einfach in ein Text Feld ein (mySQL DB).
    Bsp.: 01:17:550 (mm:ss:ttt)
    Ist es möglich mit diesen Werten zu rechnen?
    Ich bestimme die beste Zeit in einer Variablen ($poltime) . Dann soll die nächste Zeit "minus" der $poltime als $diff berechnet werden. Das Problem ist jedoch ohne eine Aufsplittung mit Definition mm:ss:ttt kann einfach nicht gerechnet werden.
    Kann hier jemand eine Lösung anbieten?
    Gruss Sven

  • #2
    das ginge schon, allerdings glaube ich nicht, daß sich dieser aufwand lohnen würde!

    Mit ner kombination von mktime() und microtime sollte es eigentlich gehen, aber wie gesagt, der aufwand.

    ---

    um damit rechnen zu können mußt du alle Zeitangaben (mm:ss:ttt) auf einen Wert bringen, du kannst ja minuten und sekunden nicht einfach addieren, also müßtest du in deinem Beispiel Minuten in Tausendstel umrechnen und sekunden in Tausendstel umrechnen, um damit rechnen zu können, und wenn du fertig bist, mußt du alles wieder zurückrechnen in minuten und sekunden

    gruss

    Kommentar


    • #3
      mach doch zwei Zweitfelder ... eins vom Type TIME und ein INT (3) unsigned für die Tausendstel, dann hält sich der Aufwand in Grenzen.
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Ist es nicht möglich die ersten beiden Stellen der Variable Zeit abzusplitten? Danach die 4. und 5. Stelle und so weiter?
        Gruss Sven

        Kommentar


        • #5
          du kannst dir per explode den wert zerlegen lassen:

          $deineVar = "mm:ss:ttt";
          $array = explode(":",$deineVar);

          array[0] enthält mm
          array[1] enthält ss
          array[2] enthält ttt

          meintest du das ??

          gruss

          Kommentar


          • #6
            Werde ich testen...
            Hört sich aber gut an! DANKE
            Gruss Sven

            Kommentar


            • #7
              Na das war dann dank eurer Tips doch nicht ganz so schwer:

              $poletime = "$poltime[Zeit]";
              $time1 = explode(":",$poletime);
              $runde = "$daten[Zeit]";
              $time2 = explode(":",$runde);
              $diff1 = ($time2[0] - $time1[0])*60;
              $diff2 = $time2[1] - $time1[1];
              $diff3 = $time2[2] - $time1[2];
              $diff4 = $diff1 + $diff2 + $diff3/1000;
              $diff5 = ($diff1 + $diff2 + $diff3/1000)-60;
              if($diff4<60)
              {$difftot = "+ $diff4"; }
              else
              {$difftot = "+1:$diff5"; }

              Und $difftot gibt mir das Ergebnis! JUHU!
              Einen Schönheitsfehler hat das ganze ja noch.
              Wie kann ich definieren, dass immer am Ende 3 Stellen also nicht + 3,4 sondern + 3,400 angezeigt werden?
              Gruss Sven

              Kommentar


              • #8
                das kannst du mit round erledigen:

                hier der link ins handbuch:
                http://www.php.net/manual/de/function.round.php

                hier die Funktion:
                double round ( double val [, int precision])


                Diese Funktion rundet den Eingabewert val auf precision Stellen nach dem Komma auf oder ab.

                Kommentar


                • #9
                  Nette Idee, jedoch bleibt "0" = leeeeeerrrr
                  Kann man nicht sagen --> gib 5 Zeichen eines Strings aus, oder so?
                  Gruss Sven

                  Kommentar


                  • #10
                    spontan würde mir da if-schleife einfallen!

                    if ($deineRechnung == 0) {
                    //mache dies
                    } else {
                    //mache das
                    }

                    hoffe, das is so ok!

                    gruss

                    Kommentar


                    • #11
                      Original geschrieben von MoRtAlan
                      spontan würde mir da if-schleife einfallen!
                      offtopic: ARGL ... Ein if-Konstrukt ist doch keine Schleife! (nix persönliches)

                      Original geschrieben von voodoo
                      Wie kann ich definieren, dass immer am Ende 3 Stellen also nicht + 3,4 sondern + 3,400 angezeigt werden?
                      str_replace('.', ',', sprintf ('%0.3f', $difftot));
                      mein Sport: mein Frühstück: meine Arbeit:

                      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                      Kommentar


                      • #12
                        Das if keine Schleife ist, is mir eigentlich klar, muß ja nicht immer voll konzentriert sein.

                        Werds mir aber an den Monitor kleben!!

                        Kommentar

                        Lädt...
                        X