Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JonasFloripa

Calculando diferença de hora em dias diferentes

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.