J'ai du code qui fait le suivi du temps pour les employés. Il crée un compteur pour montrer à l'employé combien de temps il a été chronométré.Comment obtenir le nombre de secondes entre deux DateTimes dans Ruby on Rails
Voici le code actuel:
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
Cela fonctionne très bien. Mais parce que le temps est limité à la plage de 1970 - 2038, nous essayons de remplacer toutes les utilisations de temps avec DateTimes. Je ne peux pas comprendre comment obtenir le nombre de secondes entre deux DateTimes. En les soustrayant, on obtient un rationnel que je ne sais pas interpréter, alors que soustraire le temps donne la différence en secondes.
Ah, je savais que ça l'avait renvoyé en quelques jours, je ne savais pas que cela incluait également des fractions de jours. Merci. – Tilendor
Cela ne fonctionne pas correctement en cas de seconde Leap (https://en.wikipedia.org/wiki/Leap_second). –
Juste une note à quelqu'un d'autre qui peut être confus par cela. Oui, en soustrayant deux 'DateTime's renvoie le temps écoulé en jours. Cependant, dans Rails, un attribut de modèle que vous migrez en tant que 'datetime' peut en fait être un' ActiveSupport :: TimeWithZone', et en soustrayant deux de ces temps écoulés en * secondes *. – evanrmurphy