? Tengo un código que hace un seguimiento del tiempo para los empleados. Crea un contador para mostrarle al empleado cuánto tiempo hace que se registraron.¿Cómo obtengo la cantidad de segundos entre dos DateTimes en Ruby on Rails
Este es el código actual:
start_time = Time.parse(self.settings.first_clock_in)
total_seconds = Time.now - start_time
hours = (total_seconds/ 3600).to_i
minutes = ((total_seconds % 3600)/60).to_i
seconds = ((total_seconds % 3600) % 60).to_i
Esto funciona bien. Pero como Time está limitado al rango de 1970-2038, estamos intentando reemplazar todos los usos de Time con DateTimes. No puedo descifrar cómo obtener la cantidad de segundos entre dos DateTimes. Restarlos produce un Rational que no sé cómo interpretar, mientras que restar Times produce la diferencia en segundos.
Ah, sabía que lo devolvía en días, no sabía que esto también incluiría fracciones de un día. Gracias. – Tilendor
Esto no funciona correctamente en caso de un segundo bisiesto (https://en.wikipedia.org/wiki/Leap_second). –
Solo una nota para cualquier persona que pueda estar confundida por esto. Sí, restando dos 'DateTime's devuelve el tiempo transcurrido en días. Sin embargo, en Rails, un atributo de modelo que migre como 'datetime' puede ser en realidad un' ActiveSupport :: TimeWithZone', y restando dos de esos retornos de tiempo transcurrido en * segundos *. – evanrmurphy