Ir para conteúdo

POWERED BY:

Arquivado

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

jonata

[Resolvido] cálculo de hora!

Recommended Posts

<?php

 

$horae=$lina['horae'];$expl1=explode(":", $horae);list($h1,$m1)=$expl1;///vem do banco formato hh:mm

$horaf=$lina['horaf'];$expl2=explode(":", $horaf);list($h2,$m2)=$expl2;

 

//transforna tudo em minutos!

$h1=$h1*60;

$h2=$h2*60;

$subtrai_hora=$h2-$h1;

 

//subtrai os minutos

$minuto_total=$m2-$m1;

 

if($minuto_total<0){

$minuto_total=0;

$hora=$subtrai_hora-$minuto_total;

}

 

$hora_final=round($hora/60,2);

$hora_final=$hora_final.":".$minuto_total;

?>

 

 

se a hora for 19:30 - 23:09

 

mostra 4:0 fechado....

 

 

onde está o pró pessoal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

explicacao do erro

pq a hora retorna 4?

round arredonda a conta pro mais proximo, como $hora/60 da mais do que 3.5 ele vira 4

 

pq o minuto ta em zero?

pq tu fez a maior confusao pra calcular ele ^^

 

acredito que isso deve te ajudar por enquanto...

 

<?
$horae = explode(":",$lina['horae']);
$horaf = explode(":",$lina['horaf']);

$h1 = (($horae[0]*60)+$horae[1]);
$h2 = (($horaf[0]*60)+$horaf[1]);

$diferenca = $h2-$h1;

$horas = floor($diferenca/60);
$minutos = $diferenca-($horas*60);

if ($horas <= 9) $horas = '0'.$horas;
if ($minutos <= 9) $minutos = '0'.$minutos;

echo "$horas:$minutos";
?>

pense nisso:

 

se as horas fossem 19:30 e 01:09 daria errado pois a segunda hora eh menor do que a segunda

caso você armazene no banco de dados a data e a hora você pode usas as funcoes mktime e date pra te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

já resolvi

 

só não mostra a hora negativa corretaente mas isso não importa rsrsrrsrs

 

<?php

$horae=$lina['horae'];$expl1=explode(":", $horae);list($h1,$m1)=$expl1;

$horaf=$lina['horaf'];$expl2=explode(":", $horaf);list($h2,$m2)=$expl2;

//transforna tudo em minutos!

$h1=$h1*60;

$h2=$h2*60;

$hora_total=$h2-$h1;

//subtrai os minutos

$minuto_total=$m2-$m1;

 

$hora_final=$hora_total+$minuto_total;

$hora_final=floor($hora_final/60);

if($minuto_total<0){$minuto_total=-$minuto_total;}

$hora_final=$hora_final.':'.$minuto_total;

 

$HT=$HT+$hora_final;

$MT=$MT+$minuto_total;

global $HT,$MT;

 

if($MT>'60'){$MT=$MT-'60';$HT=$HT+'1';}

elseif($MT>59 || $MT=='60'){$MT='0'; $HT=$HT+'1';}

 

if($MT<10){$MT='0'.$MT;}

if($HT<10){$HT='0'.$HT;}

 

 

 

?>

 

usei global para duas 'vars' pois os dados vem do bd e a somatória geral das horas esta fora do while(){}

 

 

este funciona OK

 

Já solucionei,

 

 

FECHADO

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.