Calculo de diferencia entre horas en PHP

En el siguiente artículo veremos como realizar una diferencia entre dos horas dadas ya sea en formato hh:mm como en decimnal, para poder realizar cálculos posteriormente.

Supongamos tener que realizar un sistema en el cual se cargan tickets de servicios. Cada ticket tiene una hora de inicio y una de finalizacion, las cuales se cargan en el formato humanizado  hh:mm. Necesitaremos primero calcular la diferencia para presentar en pantalla (por ejemplo 1:15 (una hora y quince minutos) pero, además, obtenerlo en un formato decimal para poder realizar el cálculo (1,25 en este ejemplo).

El primer paso lo realizamos con la siguiente función:

function resta($inicio, $fin)
  {
  $dif=date("H:i:s", strtotime("00:00:00") + strtotime($fin) - strtotime($inicio) );
  return $dif;
  }

Simplemente se transforman a hora los valores dados ($inicio y $fin) y se realiza la resta. Veamos un ejemplo:

$hora_inicial="11:45";
$hora_inicial="13:00";
$diferencia=resta($hora_inicial,$hora_inicial);
echo "La diferencia es $diferencia";

En este caso veremos como resultado 1:15 (una hora y quince minutos).

Volviendo al ejemplo de tickets de servicio, ahora es necesario calcular el costo de esta diferencia. Intuitivamente multiplicaremos esta hora y quince minutos por el costo de la hora de servicio, pero es necesario pasarla previamente a decimal, para lo cual utilizaremos la siguiente función:

function Decimal($hora)
  {
  $desglose=split(":", $hora);
  $dec=$desglose[0]+$desglose[1]/60;
  return $dec;
 }

Como verán, solo se trata de dividir la variable mediante el simbolo «:» y dividir el valor derecho por 60 para pasarlo a horas, luego se suman ambos valores. En el ejemplo anterior, si se le pasa como «1:15» como valor de entrada la función devolverá 1,25.

$diferencia="1:15";
$valor=Decima(15:30";
echo "La diferencia en decimal es $valor";

.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *