Einfache Möglichkeit von Stunden auf h,m,s

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

  • Einfache Möglichkeit von Stunden auf h,m,s

    Hallo PHP-User,

    gibt es eigentlich eine einfache Art über PHP eine Stundenangabe
    wie z.B. 0.87274655355249 Stunden im Format Stunde, Minute, Sekunde umrechnen zu lassen, denn wenn ich es jedesmal durch 60 teile, weiß das Script ja nicht wann die z.B. die Minuten oder Stunden erreicht sind.

    Ich habe folgende Abfrage :
    PHP-Code:
    <?php
    $sql 
    "SELECT TIME_FORMAT(SEC_TO_TIME(sum(online)),'%k h ,%i m ,%s s'), ROUND(AVG(mp),2) FROM ".$tbl_logs;
    $res mysql_query($sql);
    $vgonline mysql_result($res ,0);
    echo 
    $vgonline;
    ?>
    und bekomme richtigerweise '823 h ,49 m ,22 s' raus .

    Wenn ich nun dieses z.B. durch die Gesamtanzahl der Besucher teile
    PHP-Code:
    <?php
    $vbonline 
    $vgonline/$mhits;
    echo 
    $vbonline;
    ?>
    bekomme ich folgendes raus '0.87274655355249'
    würde aber dieses auch gerne im oben genannten Format generieren
    z.B. '52 m, 21s' und wenn die 60 m überschritten dann automatisch
    '1 h, 2 m, 32s' ausgegeben wird.

    Danke im voraus

    Gruß Manuela

  • #2
    Re: Einfache Möglichkeit von Stunden auf h,m,s

    Original geschrieben von manuelakersten
    bekomme ich folgendes raus '0.87274655355249'
    würde aber dieses auch gerne im oben genannten Format generieren
    z.B. '52 m, 21s' und wenn die 60 m überschritten dann automatisch
    '1 h, 2 m, 32s' ausgegeben wird.
    das kannste doch schön ausrechnen.

    0,87274655355249 * 60 Minuten = 52,3647932131494 Minuten

    minus 52 ....

    0,3647932131494 * 60 Sekunden = 21,887592788964 Sekunden

    minus 21 ....

    0,887592788964 * 1000stel Sekunden = 887,592788964 1000stel Sekunden
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ja klar, dass mit dem rechnen geht schon, jedoch was passiert
      wenn folgendes eintrifft.

      $minuten = "0,87274655355249 * 60"
      echo $minuten

      So, wenn nun die Stunde erreicht wird,
      dann wird statt '1 h, 05 m' ----> ' 65 m' angezeigt :-)

      Es muß doch sowas wie bei der MySQL-Abfrage 'Time_Format' auch für ein bestehen Wert geben, der dann die Stunden:Minuten:Sekunden eigenständig im Format '%k h ,%i m ,%s s' zuordnen kann.

      Gruß Manuela

      Kommentar


      • #4
        wie wärs denn so:
        PHP-Code:
        echo floor($min/60)."h:".($min %60)."m".($min%3600)."sec"
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Ohhh,

          Super Jungs was wäre ich ohne dieses Forum
          und vorallem ohne Euch, wenn mein Projekt fertig
          ist werde ich einen festen Link zu diesem Forum einbinden.

          Nachmal Danke an alle ,
          jetzt fehlt mir nur noch eine Funktion,
          aber da werde ich wieder mal in meine Bücher schauen und wenn
          ich nichts finde ( heute Abend ) noch ein letztes mal Posten,
          dann müsste ich alles haben..

          Gruß Manuela

          Kommentar


          • #6
            Hallo Leute,

            also ich habe das Script mal getestet
            und habe das '%' mal durch '*' ersetzt,
            denn sonst bekomme ich Null raus,
            jedoch funktioniert dieses auch nicht,
            denn dann bekomme ich 1200 Sec und
            das ist ja genau das was ich nicht erreichen möchte.

            Gruß Manuela

            Kommentar


            • #7
              warum ersetzt du % durch * ??

              % liefert dir den rest einer division zurück:
              12 % 5 = 2

              also wenn du 127 sekunden hast:
              127 % 60 = 7 sekunden bleiben dann übrig ..

              und der * multipliziert .. kann dann nicht mehr klappen
              mfg,
              [color=#0080c0]Coragon[/color]

              Kommentar


              • #8
                Ach so, sorry war mir unbekannt :-)

                Jedoch bekomme ich dann 0h,0m,0sec

                Mein Code :
                PHP-Code:
                <?php
                $sql 
                "SELECT TIME_FORMAT(SEC_TO_TIME(sum(online)),'%k h ,%i m ,%s s'), ROUND(AVG(mp),2) FROM ".$tbl_logs;
                $res mysql_query($sql);
                $vgonline mysql_result($res ,0);
                $min $vgonline /$ghits;
                echo 
                floor($min/60)."h:".($min %60)."m".($min%3600)."sec";
                ?>
                $ghits = Gesamthits der Besucher ( wird vorher abgefragt )

                Gruß Manuela

                Kommentar


                • #9
                  PHP-Code:
                  <?php
                  $sql 
                  "SELECT TIME_FORMAT(SEC_TO_TIME(sum(online)),'%k h ,%i m ,%s s'), ROUND(AVG(mp),2) FROM ".$tbl_logs;
                  $res mysql_query($sql);
                  echo 
                  $vgonline mysql_result($res ,0);
                  echo 
                  "<br><br>\n\n";
                  echo 
                  $min $vgonline /$ghits;
                  echo 
                  "<br><br>\n\n";
                  echo 
                  floor($min/60)."h:".($min %60)."m".($min%3600)."sec";
                  ?>
                  wenn irgendwas nicht korrekt ist, ist es am leichtesten erst mal alle variablen auszugeben die verwendet werden ..
                  damit sie nicht aufeinander picken paar leerzeilen ..

                  bekommst du in $min die gewünschte zeit ?
                  mfg,
                  [color=#0080c0]Coragon[/color]

                  Kommentar


                  • #10
                    Hallo,

                    Bin zwar nicht der Held, aber ist enthält $vgonline nicht einen String!?

                    Eventuell scheidert hier ja schon die Berechnung insgesamt da immer mit der Stundenzahl gerechnet wird. Die SQL abfrage dürfte wohl diesen Wert zurückliefern : "1 h,56 m,59 s". Bei der Berechnung wird nach der 1 (in meinem Beispiel) der Rest verworfen.

                    Sollte ich mich irren, dann vergesst einfach mein Beitrag.

                    Gruß
                    GameShot

                    Kommentar


                    • #11
                      Hi,

                      Geht mir gerade so durch den Kopf, warum lässt Du den mySQL Server das nicht berechnen. Da die Gestamtzahl ja vorliegt "ghits" könntest Du doch die SQL anweisung entsprechend zusammen setzen.

                      Also in etwas so:

                      PHP-Code:
                      $sql "SELECT TIME_FORMAT(SEC_TO_TIME((sum(online)/".$ghits.")),'%k h ,%i m ,%s s'), ROUND(AVG(mp),2) FROM ".$tbl_logs
                      Dann sollte doch auch das Ergebniss stimmen. Konnte es nun leider nicht bei mir Testen, aber ein Versuch ist es doch wert.

                      Gruß
                      GameShot

                      Kommentar


                      • #12
                        Klasse 'Date'

                        Verwende doch einfach die Klasse 'Date' von Leo West
                        http://lwest.free.fr/doc/php/lib/date-en.html

                        Tut alles was Du willst!

                        Orestes
                        Risc is part of the game if you want to sit in the captain´s chair.

                        Kommentar


                        • #13
                          Danke Leute, für Eure Hilfe !

                          Mit der Lösung von 'GameShot' hat es geklappt - SUPER !

                          Vielleicht fällt jemanden noch ein wie ich in der Abfrage die
                          Null weglassen kann wenn diese Ausgabe nicht benötigt wird

                          '0 h ,20 m ,09 s'

                          Danke nochmal :-)

                          Gruß Manuela

                          Kommentar


                          • #14
                            wenn der string immer so raus kommt, kannst du das ja wegersetzten.

                            PHP-Code:
                            $online str_replace("0 h"""$online); 
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Danke nur wie ist es wenn ich mehrere Ausgaben ersetzen möchte

                              PHP-Code:
                              <?php
                                $sql 
                              "SELECT TIME_FORMAT(SEC_TO_TIME((sum(online)/".$ghits.")),'%k h %i m %s s'), ROUND(AVG(mp),2) FROM ".$tbl_logs;
                                 
                              $res mysql_query($sql);
                                 
                              $vbonline mysql_result($res ,0);
                                 
                              $vbonline2 str_replace("0 h"""$vbonline);
                                 echo 
                              $vbonline2;
                              ?>
                              PHP-Code:
                              $vbonline2 str_replace("0 m"""$vbonline); 
                              Danke Gruß Manuela

                              Kommentar

                              Lädt...
                              X