miƩrcoles, 26 de agosto de 2009

Restar Horas Minutos y Segundos en PHP

se me hizo un problema cuando estaba programando un control de asistencia en PHP, y las funciones basicas del PHP no podian restar dos horas, por ejemplo 10:30 - 12:30, siempre salia un numero diferente al que yo queria restar, busque ayuda en todos los foros que me mostraba Google y nada, hasta que por fin di con una que casi lo resuelve su problema era que restaba solo horas positivas es decir 10:30 - 10:25, pero para la asistencia el personal podia salir antes de su hora de salida entonces se producia un error, por lo tanto no sirve. la solucion que le di fue:

function diferencia($h1,$h2){
if(strtotime($h1)>strtotime($h2)){
$signo="";
}
elseif(strtotime($h1)==strtotime($h2)){
$signo="";
}
else{
$h3=$h2;
$h2=$h1;
$h1=$h3;
$signo="-";
}
$horaac=strtotime($h1)-strtotime($h2)+18000;
return $signo.date("H:i:s",$horaac);
}
echo dif2("10:00:10","10:35:15");

te devuelve tanto la hora si es negativa como tambien si la hora es positiva.