Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] jak na podstawie liczby sekund obliczyś liczbe dni,godzin,sekund
Forum PHP.pl > Forum > Przedszkole
itson
jak na podstawie liczby sekund obliczyć liczbę dni,godzin,sekund

probowałem to jakoś dzielić, ale wtedy ja np podzielę przez liczne sekund w czasie dnia czyli 36400 dostaje wynik np 1.2749725274725 a chciałbym żeby pisało 1 dzień ??godzin ??sekund
b_chmura
  1. <?php
  2. $sekundy = 1234567890;
  3. $minuty = round($sek/60);
  4. $godziny = round($minut/60);
  5. $doby = round($godziny/24);
  6. ?>
Ertai
Zamien wszedzie round() na floor() poniewaz jak masz 1,5 doby to chyba na stronie chcesz miec 1 dobe (pelne doby) a nie 2 doby (bo juz jest powyzej polowy lub polowa). I wtedy mozesz np wyswietlac cos w stylu print("minela: $doby doba, $godziny godzin, $minuty minut, $sekundy sekund"); i beda to poprawne wyniki.
Darti
  1. <?php
  2. $dana = 925262;
  3. $dni = floor($dana/86400);
  4. echo 'dni: '.$dni."\n";
  5. $godzin = floor(($dana-($dni*86400))/3600);
  6. echo 'godzin: '.$godzin."\n";
  7. $minut = floor(($dana-($dni*86400)-($godzin*3600))/60);
  8. echo 'minut: '.$minut."\n";
  9. $sekund = floor(($dana-($dni*86400)-($godzin*3600)-($minut*60)));
  10. echo 'sekund: '.$sekund."\n";
  11. ?>
-trystero-
chyba za bardzo to komplikujecie.

$seconds = 55500;

$godziny = floor($sekundy/3600);
$roznica = $seconds-($godziny*3600);
$minuty = floor($roznica/60);
smietek
Kiedyś napisałem taką prostą funkcję, która formatuje ilość sekund na taki format: DNIE:GODZINY:MINUTY:SEKUNDY i jeszcze to chyba na stringa formatuje, żeby wyglądało np. tak: 0:05:09:01. Wygląda to tak:
  1. <?php
  2. function format_sec($sec){
  3. $days = 0;
  4. $hours = 0;
  5. $minutes = 0;
  6. $seconds = $sec;
  7. if ($seconds >= 60){
  8. $to_minutes = ($seconds / 60);
  9. settype($to_minutes, "Integer");
  10. $minutes = $to_minutes;
  11. $seconds = $seconds%60;
  12. }
  13. if ($minutes >= 60){
  14. $to_hours = $minutes / 60;
  15. settype($to_hours, "Integer");
  16. $hours = $to_hours;
  17. $minutes = $minutes%60;
  18. }
  19. if ($hours >= 24){
  20. $to_days = $hours / 24;
  21. settype($to_days, "Integer");
  22. $days = $to_days;
  23. $hours = $hours%24;
  24. }
  25. if ($hours < 10){
  26. $hours = "0$hours";
  27. }
  28. if ($minutes < 10){
  29. $minutes = "0$minutes";
  30. }
  31. if ($seconds < 10){
  32. $seconds = "0$seconds";
  33. }
  34. $seconds = "$seconds s";
  35. $minutes = "$minutes m";
  36. $hours  = "$hours h";
  37. if ($days == 0){
  38. $days = FALSE;
  39. }  else {
  40. $days = "$days d";
  41. }
  42. return "$days $hours $minutes $seconds";
  43. }
  44. ?>

I u mnie działa. Może i można to było prościej zrobić, ale wiem, że to zadziała.
b_chmura
Manual...
Cytat
Funkcja mktime() przydaje się przy wykonywaniu arytmetyki dat i walidacji, gdyż automatycznie policzy właściwą wartość dla danych spoza przedziałów

  1. <?php
  2. $sek = 123456;
  3. echo date ("M-d-Y H:s:i", mktime (0,0,$sek,0,0,0));
  4. ?>
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.