Laravel 5 Diferencia de tiempo

Tengo una aplicación que al registrarse en los registros a tiempo y al cerrar la sesión registra el tiempo.

Mi mesa tiene IN_TIME y OUT_TIME

Ejemplo de datos dentro de esas columnas:

IN_TIME = 16:06:46

OUT_TIME = 16:08:07

Tengo un controlador que a mi archivo de plantilla de blade muestra todas las advertencias para una persona determinada, lo que quiero hacer es mostrar la diferencia de tiempo entre las dos.

Ver debajo mi código actual que actualmente muestra 0

**Time onsite:** {{ date('G:i', strtotime($attrec->out_time)) - date('G:i', strtotime($attrec->in_time)) }} 

¿Hay alguna razón por la cual no puedo obtener la cifra correcta?

Está convirtiendo las marcas de tiempo en cadenas formateadas e intentando calcular la diferencia entre las cadenas. En su lugar, debe calcular la diferencia entre los resultados de cada datetotime (que devuelve marcas de tiempo UNIX que son esencialmente segundos) y luego formatee ese resultado:

 {{ date('G:i', strtotime($attrec->out_time) - strtotime($attrec->in_time)) }} 

También puede usar Carbon haciendo lo siguiente:

 {{ (new Carbon($attrec->out_time))->diff(new Carbon($attrec->in_time))->format('%h:%I') }} 

Esto usa el método diff heredado de DateTime , que devuelve una instancia de DateInterval . Los caracteres de formato del formato DateInterval::format son diferentes de los utilizados por date . Es por eso que la cadena de formateo es %h:%I , que es el equivalente de G:i .

El código anterior dará como resultado:

 0:01 

Porque eligió formatear la hora sin ceros a la izquierda, y la diferencia entre las dos marcas de tiempo es de un minuto (y algunos segundos libres que no se muestran porque no están incluidos en la cadena de formato).

Puedo estar equivocado, pero es probable que las operaciones aritméticas no estén definidas en el resultado de la date . No estoy familiarizado con PHP, pero bash, por ejemplo, aplicará un valor numérico de “0” a cualquier cosa que no sea un número que intente agregar. Entonces si lo hiciste

 "hello" + 5 

obtendrías 5. En este caso, tendrías dos objetos evaluados como 0 dando 0 + 0 = 0

Aquí hay una pregunta que aborda la aritmética del tiempo en PHP. ¡Con suerte, eso lo pondrá en la mejor forma de lograr lo que quiere!