Ho il codice che fa il monitoraggio del tempo per i dipendenti. Crea un contatore per mostrare al dipendente per quanto tempo sono stati sincronizzati.Come ottengo il numero di secondi tra due DateTimes in Ruby on Rails
Questo è il codice corrente:
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
Questo funziona bene. Ma poiché il tempo è limitato all'intervallo tra il 1970 e il 2038, stiamo cercando di sostituire tutti gli usi temporali con DateTimes. Non riesco a capire come ottenere il numero di secondi tra due DateTimes. Sottraendo loro si ottiene un Razionale che non so come interpretare, mentre sottraendo Times si ottiene la differenza in secondi.
Ah, lo sapevo tornato in giorni, non sapevo che questo includerebbe frazioni di un giorno pure. Grazie. – Tilendor
Questo non funziona correttamente in caso di un secondo salto (https://en.wikipedia.org/wiki/Leap_second). –
Solo una nota per chiunque altro possa essere confuso da questo. Sì, sottraendo due 'DateTime's restituisce il tempo trascorso in giorni. Tuttavia, in Rails un attributo di modello che viene migrato come 'datetime' potrebbe effettivamente essere un' ActiveSupport :: TimeWithZone' e sottrarre due di questi al tempo trascorso in * secondi *. – evanrmurphy