Como restar entre 2 horas en PHP

publicado por: Anonymous

Estoy utilizando Codeigniter y deseo hacer una resta en la vista.

<?php
    $cadena = strtotime($seguimiento->horaInicio);
    $cadena = date("H:i", $cadena);
    echo $cadena;

    $cadena2 = strtotime($seguimiento->horaTermino);
    $cadena2 = date("H:i", $cadena2);
    echo $cadena2;

    $res = abs($cadena - $cadena2);
    echo $res;
?>

En caso que la hora sea 11:30 16:15 el resultado debería ser 4,85 pero en vez me muestra 5. Espero haberme explicado bien.

   var HDesde = $(this).data("inicio");
       var HHasta = $(this).data("fin");


       // var dia = $(this).data("dia");
       // if (i=0) { fecha = dia; }

       hora1 = (HDesde).split(":");
       hora2 = (HHasta).split(":");
       HoraDesde=(hora1[0]);
       MinutoDesde=(hora1[1]);
       HoraHasta=(hora2[0]);
       MinutoHasta=(hora2[1]);
       TotDesde=parseInt((HoraDesde*60)) + parseInt(MinutoDesde);
       TotHasta=parseInt(HoraHasta*60) + parseInt(MinutoHasta);
       RestaHoras=(TotHasta - TotDesde);
       TotHorasTrab=(RestaHoras / 60).toFixed(2);

       $(this).html(TotHorasTrab);

solución

Podría servirte la funcion diff de php.

Devuelve la diferencia entre dos objetos DateTimeInterface.

$horaInicio = new DateTime($cadena);
$horaTermino = new DateTime($cadena2);

$interval = $horaInicio->diff($horaTermino);
echo $interval->format('%H horas %i minutos %s seconds');

La variable $interval viene a ser del tipo DateInterval; si deseas operar con eso variable, por ejemplo para sumarla a otra fecha puedes usar la función add:

$nuevaFecha = new DateTime('2018-07-04 00:00:00');
$nuevaFecha->add($interval);
echo $nuevaFecha->format('Y-m-d H:i:s');
Respondido por: Anonymous

Leave a Reply

Your email address will not be published.