Pra começar, quero deixar claro que o meu objetivo aqui é colocar o total de horas!!
TOTAL, ou seja, tipo um banco de horas...onde eu tenho que acumular o quantidade de horas extras que alguém fez, por exemplo.
$times = array(
'01:30:22',
'34:17:03',
);
$seconds = 0;
foreach ( $times as $time ){
list( $g, $i, $s ) = explode( ':', $time );
$seconds += $g * 3600;
$seconds += $i * 60;
$seconds += $s;
}
$hours = floor( $seconds / 3600 );
$seconds -= $hours * 3600;
$minutes = floor( $seconds / 60 );
$seconds -= $minutes * 60;
echo "{$hours}:{$minutes}:{$seconds}";
Achei essa função aqui: http://www.codingforums.com/archive/index.php/t-150266.html
Bom, isso serviu muito bem pra mim, espero que ajude alguém.

12 comentários:
bahhhh muito útil, é sempre uma dor de cabeça mexer com essas horas...
ahuahuauhaahuauahuahu
Marlaaaaaaaaaaaaaaaaaaaa
Por que tu não me perguntou como era? Te dizia na lata!
Mentira!
Domingo farei prova pro TSI. Se passar, provavelmente estarei estudando essas porcarias aí e sendo feliz. Ou não.
tem um que fiz para somar hora extra:
=60){$total_m=$total_m-60;$total_hr=$total_hr+1; }
$total_hr=$total_hr+$hr;
$h_extra="$total_hr:$total_m";
}
############################## tudo em minutos
$minutos=($total_hr*60)+$total_m;
echo "$h_extra";
if($minutos!=""){
$extra= $minutos*(($salario/(220*60))+((($salario/(220*60))*50)/100));
echo"$horas_total hs - R$ "; echo number_format( $extra, 2, ',', '.');
}?>
=60){$total_m=$total_m-60;$total_hr=$total_hr+1; }
$total_hr=$total_hr+$hr;
$h_extra="$total_hr:$total_m";
}
############################## tudo em minutos
$minutos=($total_hr*60)+$total_m;
echo "$h_extra";
if($minutos!=""){
$extra= $minutos*(($salario/(220*60))+((($salario/(220*60))*50)/100));
echo"$horas_total hs - R$ "; echo number_format( $extra, 2, ',', '.');
}?>
Quer casar comigo?
Valew pela dica... ;)
Simplesmente não sei como agradecer, precisava exatamente disso pra somar horas, e nao achava em lugar algum, obrigado por compatilhar.
Eu faço assim:
function timeDiff($ini, $fim) {
$arr = explode(':', $ini);
$hour = $arr[0];
$min = $arr[1];
$diff = date('H:i', strtotime($fim .' - '. $hour .' hours'));
if(intval($min) > 0)
$diff = date('H:i', strtotime($diff .' - '. $min .' minutes'));
return $diff;
}
Na verdade essa subtrai as horas, mas alterando '-' para '+' ela soma :D
com algumas adaptações tbm pode ser usada para somar ou subtrair datas.
+ 1 day, + 1 week... e por ai vai
Parabéns pelo blog, muito util essa function .. vlew
Ae pessoal. Obrigada pelos comentários e dicas que vcs tem colocado aqui no Blog! Valeu!
=)
Olá, queria saber se tem como adaptar esta função para soma horas usando um campo datetime
me foi útil este código! éh foda mexer com as horas até na programação. OGRIGADO!
Postar um comentário