Iacóbus de Cártago 0 Denunciar post Postado Janeiro 22, 2016 Boa tarde! Alguém conhece alguma função para calcular horas acumuladas ou subtrair. Por ex: 72:00:00 horas extras 100:50:00 horas não trabalhadas. Existe algum método do PHP para ter o total do saldo de horas? Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 22, 2016 Muita coisa você faz com a Classe DateTime Também tem as Funções de Data e Hora No seu caso, talvez seja até mais simples converter para minutos, calcular e depois converter para o que quiser (horas, dias etc) Compartilhar este post Link para o post Compartilhar em outros sites
Iacóbus de Cártago 0 Denunciar post Postado Janeiro 22, 2016 Reslovido, só precisei testar qual é maior e subtrair, depois inserir um sinal na string mesmo. Bem simples a conversão. function converteparasegundos($time) { $hours = substr($time, 0, -6); $minutes = substr($time, -5, 2); $seconds = substr($time, -2); return $hours * 3600 + $minutes * 60 + $seconds; } function converterparahoras($segundos){ $hours = floor($segundos / 3600); $segundos -= $hours * 3600; $minutes = floor($segundos / 60); $segundos -= $minutes * 60; return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); Caso alguem se interessar aqui tem uma função que achei legal para somar um array de hroas. function somar_horas($tempos) { $total_segundos = 0; foreach ($tempos as $tempo) { if (preg_match('/([+-]?)(\d{2}):(\d{2}):(\d{2})/', $tempo, $matches)) { $multiplicador = $matches[1] == '-' ? -1 : 1; $total_segundos += $multiplicador * ((int)$matches[2] * 3600 + (int)$matches[3] * 60 + (int)$matches[4]); } } $sinal = $total_segundos > 0 ? '' : '-'; $horas = floor($total_segundos / 3600); $total_segundos = $total_segundos % 3600; $minutos = floor($total_segundos / 60); $segundos = $total_segundos % 60; return sprintf('%02d:%02d:%02d', $horas, $minutos, $segundos); } Compartilhar este post Link para o post Compartilhar em outros sites