3:30 Std in Menge

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

  • 3:30 Std in Menge

    Hi,

    der Title ist vielleicht ein bischen ungünstig gewählt aber ich weiß nicht wie is es sonst nennen soll.

    Ich muss gelegentlich Zeitangaben in Form von 3:30Std in eine Zahl umrechnen um (zB) Summen zu bilden oder damit rechnen zu können.

    Momentan nutze ich folgenden Weg:
    PHP-Code:
    $std explode(':''3:30');
    $std $std[0] + $std[1]/60//$std = 3,5 
    Gibt es da nicht einen besseren Weg? strtotime() fällt leider aus weil diese Funktion immer komplette Daten erwartet. strptime() wäre noch eine alternative, tut aber schlußendlich das selbe wie das explode() oben.

    Any ideas?

  • #2
    Was genau stört dich an dem Weg?

    Kommentar


    • #3
      Naja, ich würds gern in einer Zeile machen... quasi den eleganten Weg


      //edit
      PHP-Code:
      $std array_shift(explode(':''3:30')) + array_pop(explode(':''3:30'))/60
      Das wäre in einer Zeile, ginge auch. Aber zwei mal explode() find ich doof...
      Zuletzt geändert von prego; 14.05.2009, 15:17.

      Kommentar


      • #4
        Zitat von prego Beitrag anzeigen
        Naja, ich würds gern in einer Zeile machen... quasi den eleganten Weg
        Nichts wird eleganter, weil man es auf Teufel komm raus in eine Zeile quetscht.


        Aber wenn du das ganze eh öfters benötigst, machst du natürlich eine Funktion draus - Voila, an der Aufrufstelle nur noch "eine Zeile", und damit per (deiner) Definition "elegant" ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Es ging ja nicht zwingend um eine Zeile. Aber wenn das der "Königsweg" ist, ist alles gut

          Und natürlich habe ich eine Funktion dafür

          Wie siehts mit dem Weg zurück aus?

          PHP-Code:
          (int)$std.':'.sprintf('%02d', (($std-(int)$std)*60)) // 3:30 
          Geht das irgendwie eleganter?


          //edit:
          Hier noch mal zum einfacheren Verständnis:
          PHP-Code:
          $duration 3,5;

          $std = (int)$duration // 3
          $min = ($duration-$std)*60 // 30

          echo $std.':'.sprintf('%02d'$min); // 3:30 
          Zuletzt geändert von prego; 14.05.2009, 16:50.

          Kommentar


          • #6
            Eine von vielen Möglichkeiten:

            PHP-Code:
            $duration 3.5;
            echo 
            sprintf('%d:%02d'$h floor($duration), 60 * ($duration $h));
            // 3:30 

            Kommentar

            Lädt...
            X