JonasFloripa 0 Denunciar post Postado Março 25, 2019 Olá pessoal, Tenho uma aplicação de pedido de folga que tenho que fazer um calculo de diferença de hora. Assim, o usuário tem um banco de hora em sua garga horária, ele pede uma folga das 17:0:00 até 22:00:00, a aplicação vai calcular essa diferença, o problema seria que se ele pedir folga às 22:00:00 do dia 22 até as 03:00:00 do outro dia 23, não faz esse calculo. Já procurei na net vê se achava algo, mas nada. Preciso de algo que faria os dois tipos de calculo, no mesmo dia ou dias diferente. meu código calcula no mesmo dia... se tiver outra função que calcula em dias diferente eu dou um jeito de qual vai ser usado na hora do pedido. Não passo a informação do dia, só da hora inicial e final. function calculaTempo($hora_inicial, $hora_final) { $i = 1; $tempo_total; $tempos = array($hora_final, $hora_inicial); foreach($tempos as $tempo) { $segundos = 0; list($h, $m, $s) = explode(':', $tempo); $segundos += $h * 3600; $segundos += $m * 60; $segundos += $s; $tempo_total[$i] = $segundos; $i++; } $segundos = $tempo_total[1] - $tempo_total[2]; $horas = floor($segundos / 3600); $segundos -= $horas * 3600; $minutos = str_pad((floor($segundos / 60)), 2, '0', STR_PAD_LEFT); $segundos -= $minutos * 60; $segundos = str_pad($segundos, 2, '0', STR_PAD_LEFT); return "$horas:$minutos:$segundos"; } Obrigado pessoal Compartilhar este post Link para o post Compartilhar em outros sites
Wesley Santos 28 Denunciar post Postado Março 26, 2019 Pode usar a classe datetime do PHP. https://www.php.net/manual/pt_BR/datetime.diff.php https://www.php.net/manual/pt_BR/class.dateinterval.php Exemplo: $objDataInicio = new DateTime(date('Y-m-d H:i:s')); $objDataFinal = new DateTime(date('2019-03-27 22:00:00')); $diferenca = $objDataInicio->diff($objDataFinal); var_dump($diferenca); echo $diferenca->format('%d dia(s) %h hora(s) %m minuto(s)'); Compartilhar este post Link para o post Compartilhar em outros sites