Autor Zpráva
jtfcobra
Profil
Ahoj potřeboval bych poradi jak sečtu odpracované hodiny v PHP? Děkuji moc za radu

12:09:17 
12:33:12 
11:37:10 
06:57:40 
12:15:11
juriad
Profil
Vyber si:
$s = (17+12+10+40+11) + (9+33+37+57+15) * 60 + (12+12+11+6+12) * 3600; # buď
$s = (12*3600+9*60+17)+(12*3600+33*60+12)+(11*3600+37*60+10)+(6*3600+57*60+40)+(12*3600+15*60+11); # nebo
# $s je odpracovaná doba v sekundách

# toto jem převádí sekundy na hodiny, minuty a zbylé sekundy
$h = $s / 3600;
$s %= 3600;
$m = $s / 60;
$s %= 60;

echo "$h:$m:$s";
jtfcobra
Profil
Vypada to zajimave ale jak tam dostanu ten cas?
12:09:17
12:33:12
11:37:10
06:57:40
12:15:11

// jak dostanu z 12:09:17 ?? (a , b ,c)?
$a=??
$b=??
$c=??
$s= ($a*3600+$b*60+$c)
// pak je vysledek??
$h = $s / 3600;
$s %= 3600;
$m = $s / 60;
$s %= 60;
echo "$h:$m:$s"
Alphard
Profil
Byl to jen nástřel, nad kterým jste se měl zamyslet. Celkově je reprezentace času jako 12:09:17 krajně nevhodná pro jakékoliv výpočty.
Nejlepší bude vstupy hned převést na číslo (resp. na vhodný objekt), s tím pracovat a v jiném formátu dělat jen výpisy.
function HisToSec($timeString)
{
  $parts = explode(':', $timeString);
  return 3600*$parts[0] + 60*$parts[1] + $parts[2];
}


Mimochodem, kdybyste někde viděl radu použít strtotime (bohužel to vidím dost časo), pozor na časová pásma, pro tento účel se ta funkce nehodí.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: