Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal.
Estou precisando ver a diferença de tempo (hora, minuto e segundo) entre campos de uma base mysql no php.
Meus campos ja estão no formato hora (na base).
fiz um teste de um campo que o horário inicial é: 15:12:00 e hora Final é: 15:30:00
Porem meu resultado final ficou assim: "0" zerado...
Vejam meu código:
<?php
$HoraIni=($hora_inicial);
$HoraFim=($hora_fim);
$result=($HoraIni-$HoraFim);
echo ($result);
?>ja removi o () e ainda ficou com 0..
sobre converter poderia me dar um exemplo de como fazer isso?
<?php
$HoraIni = strtotime($hora_inicial);
$HoraFim = strtotime($hora_fim);
$result = $HoraFim - $HoraIni;
echo $result;
?>
Isso irá retornar os segundos entre uma hora e outra.
A melhor forma de transformar em timestamp é direto no SQL, mas como eu não sei quais são todas as informações da sua tabela usei a função strtotime.
Subtrair datas não é o mesmo que subtrair números comuns. Existem classes prontas no PHP que fazem isso por você.
Eu recomendo o uso da função mktime(). Procure sobre ela e faça uma boa busca no fórum, pois já temos muito conteúdo a respeito.
[]'s
apresentou o seguinte resultado: "-1080"
Eu pensei que a hora final seria maior que a hora inicial.
Se for o contrário deixe assim:
$HoraIni = strtotime($hora_inicial);
$HoraFim = strtotime($hora_fim);
$result = $HoraIni - $HoraFim;
echo $result;
Se em vez de apenas os segundos você quiser exibir a quantidade de dias, horas, minutos e segundos use o método diff da classe DateTime.
Agora deu certo.... 18 minutos o resultado
<?php
$HoraIni=strtotime($hora_inicial);
$HoraFim=strtotime($hora_fim);
$result=($HoraFim-$HoraIni)/60;
echo $result;
?>
Porem ele resultou : 18
Será possivel ele retornar como minutos no formato: "00:18:00"
Qual a versão do seu PHP? Se for 5.3 você pode usar a classe DateTime pra comparar as datas e pegar horas, minutos, etc.
Se não for você pode fazer os cálculos manualmente, dê uma olhada neste artigo de um blog:
o que está imprimindo no result(); de certo é pq você tem que formatar ela para o padrão ingles, e também remova () do echo deixe apenas
echo $result;
aaaa-mm-dd