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.
17 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!
Acabei de achar esse código. Só senti falta do "str_pad" pra que o resultado seja 03:05 ao invés de 3:5. :)
me ajudou bastanta, parabéns
Não existe qualquer razão para complicar.
$date=date_create();
date_add($date,date_interval_create_from_date_string("1 hour"));
São duas linhas de código...
Não se esqueçam que $date é um objeto, para quem conhece OOP será mais fácil.
echo date_format($date,"d-m-Y H:i:s.u");
d -> dia
m -> mês
Y -> ano
H -> horas
i -> minutos
s -> segundos
u -> milesimas
Usei o código do post e funciona muito bem com saldo de horas positivos, mas com saldo negativo não dá certo, alguém tem alguma ideia de como trabalhar com soma de hora negativa ?
Exemplo do que estou fazendo
Existe um banco de horas onde é somado tanto saldo positivo(+ de 8h sendo lançado apenas a diferença ex: 8:20 é lançado 20 minutos) qto negativo(- de 8h 7:15 é lançado -45 minutos)
Usando o código sitado no post dá um resultado estranho.
Postar um comentário