Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formatowanie daty..
Forum PHP.pl > Forum > Przedszkole
Giluś
Hej, posiadam wartość godziny w formacie np.: "1.5" lub np.: "1.8" i teraz chciałbym to w miarę prosty sposób zamienić na przykładowo "1 h i 30 min."

Znacie jakiś sposób aby to dosyć łatwo sformatować i zapisać w takim formacie ?



Pozdrawiam.
by_ikar
Rozbijasz za pomocą explode, jeżeli istnieje drugi klucz, to tą wartość dzielisz przez 10, otrzymany wynik mnożysz przez 60 (ilość minut). Mogło by to mniej więcej wyglądać tak:

  1. <?php
  2.  
  3. $oldTime = '1.5';
  4. $newTime = '';
  5.  
  6. $arr = explode('.', $oldTime);
  7.  
  8. $newTime = $arr[0].' h';
  9.  
  10. if(!empty($arr[1]))
  11. {
  12. $newTime .= ' i '.(($arr[1] / 10) * 60).' min';
  13. }
  14.  
  15. echo $newTime;

Daimos
można szybciej:
  1. $time = '1.8';
  2. echo gmdate("H:i:s", $time * 60 * 60);
Giluś
@UP, to nie działa dobrze..

Już nie chodzi mi o sam wygląd (00:00:00), bo on mi nawet nie przeszkadza..
Gdy przykładowo mam 192 godziny ? - to chciałbym aby się wyświetliło 192 h (ewentualnie 192 h i 0 min) a w twoim przypadku przy wartości 192 godziny mam wynik: 00:00:00, a wiec "twoja" funkcja działa jedynie do wartości:
  1. $time = '23.9999';



Pozdrawiam.
Damonsson
Za to ta funkcja to też trochę strzelanie z armaty do muchy.


Można tak:
  1. $time = '1.5';
  2. $hour = floor($time);
  3. $min = round(60*($time-$hour));
  4.  
  5. echo $hour . ' : ' . $min;
  6. //czy tam jak sobie chcesz
  7. echo $hour . 'h ' . $min . 'min';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.