Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] jak na podstawie liczby sekund obliczyś liczbe dni,godzin,sekund
itson
post 11.11.2007, 21:37:32
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 3.01.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
b_chmura
post 11.11.2007, 22:15:02
Post #2





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $sekundy = 1234567890;
  3. $minuty = round($sek/60);
  4. $godziny = round($minut/60);
  5. $doby = round($godziny/24);
  6. ?>
Go to the top of the page
+Quote Post
Ertai
post 11.11.2007, 22:29:07
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 14.12.2003

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Ertai 11.11.2007, 22:33:28


--------------------
"Was that it?" - Ertai
Go to the top of the page
+Quote Post
Darti
post 12.11.2007, 01:39:08
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

Ostrzeżenie: (0%)
-----


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


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
--trystero--
post 12.03.2008, 23:40:36
Post #5





Goście







chyba za bardzo to komplikujecie.

$seconds = 55500;

$godziny = floor($sekundy/3600);
$roznica = $seconds-($godziny*3600);
$minuty = floor($roznica/60);
Go to the top of the page
+Quote Post
smietek
post 13.03.2008, 06:41:50
Post #6





Grupa: Zarejestrowani
Postów: 306
Pomógł: 32
Dołączył: 20.01.2008

Ostrzeżenie: (20%)
X----


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.


--------------------
Go to the top of the page
+Quote Post
b_chmura
post 13.03.2008, 08:21:07
Post #7





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


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


Ten post edytował b_chmura 13.03.2008, 08:21:21
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2025 - 05:13