/* Versão 2.0 autor: Cássio Henrique Jorge cassiohj@yahoo.com.br Data Atualização: 14/05/2005 Descrição: Esta versão corrige os bugs do cálculo de horas e foi incluído a diferença de horas em datas diferentes. Autor: Alcione Ferreira Data Criação: 24/11/2004 Descrição: Função que retorna a diferença entre duas horas distintas, usando o padrão 24 horas Atualização: 23/03/2005 Descrição: Usando teste de array juntamente com o definição da data inicial, a data final é considera o dia de HOJE. Ele retorna a quantidade de horas finais */ FUNCTION Calcula_Dif_Hora($inicio,$fim,$data,$dataf,$dif) { global $dif; if (!is_array($inicio)) { $inicio = explode(":",$inicio); } if (!is_array($fim)){ $fim = explode(":",$fim); } if (!is_array($data)){ if (strstr("-",$data{4})){ $data = explode("-",$data); } else if (strstr("-",$data{2})) { $aux = explode("-",$data); $data = array ($aux[2],$aux[1],$aux[0]); } } else { if (strlen($data[0]) == 2){ $data = array ($data[2],$data[1],$data[0]); } } if (!is_array($dataf)){ if (strstr("-",$dataf{4})){ $dataf = explode("-",$dataf); } else if (strstr("-",$dataf{2})){ $aux2 = explode("-",$dataf); $dataf = array ($aux2[2],$aux2[1],$aux2[0]); } } else { if (strlen($dataf[0]) == 2){ $dataf = array ($dataf[2],$dataf[1],$dataf[0]); } } $time_inicio = (($inicio[0]*60)*60) + ($inicio[1]*60) + $inicio[2]; $time_fim = (($fim[0]*60)*60) + ($fim[1]*60) + $fim[2]; $t[0] = floor(($time_fim - $time_inicio) / 60); $t[1] = floor((($time_fim - $time_inicio) / 60) / 60); $h = $t[1]; $m = $t[0] - ($t[1]*60); if ($data[0] != $dataf[0]) { $aux2 = ($dataf[0] - $data[0])*365; $valor = $valor+$aux2; } if ($data[1] != $dataf[1]){ $aux2 = ($dataf[1]-$data[1])*30; $valor = $valor+$aux2; } if ($data[2] != $dataf[2]) { $aux2 = $dataf[2]-$data[2]; $valor = $valor+$aux2; } $t[1] = $t[1]+$valor*24; //$valor = numero de dias a mais if ($h < 0) { $h=$t[1]; } if ($h < 10) $h = "0$h"; if ($m < 10) $m = "0$m"; $dif="$h:$m"; return $dif; }