jonata 0 Denunciar post Postado Março 26, 2008 <?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
narizgudo 0 Denunciar post Postado Março 26, 2008 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
jonata 0 Denunciar post Postado Março 26, 2008 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