3:30 Std in Menge

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

  • 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?

    Comment


    • #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...
      Last edited by prego; 14-05-2009, 14:17.

      Comment


      • #4
        Originally posted by prego View Post
        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.

        Comment


        • #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 
          Last edited by prego; 14-05-2009, 15:50.

          Comment


          • #6
            Eine von vielen Möglichkeiten:

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

            Comment

            Working...
            X