2009-04-09 19 views
59

Estoy tratando de obtener la diferencia en horas para dos instancias de tiempo diferentes. Obtengo estos valores del DB como: columna de fecha y horaDiferencia de tiempo en horas

¿Cómo puedo hacer esto para que incluya los meses y años también en el cálculo mientras se ignoran o redondean los minutos? ¿Esto solo se puede hacer manualmente o hay una función para hacer esto?

Respuesta

119
((date_2 - date_1)/3600).round 

o

((date_2 - date_1)/1.hour).round 
+0

fresca ... !! funciona bien ... – balanv

+7

Esto no funciona para mí. Tal vez ha cambiado desde 2009? Ahora, tengo que hacer '(date_2 - date_1) * 24' para obtener las horas – Jeff

+1

Funciona totalmente bien para mí en Rails 4.2. – Numbers

7

Se puede utilizar una gema llamada time_diff para obtener la diferencia de tiempo en formatos muy útiles

10

esto funciona muy bien, ejemplo para el número de horas que el usuario crea la cuenta

(Time.parse(DateTime.now.to_s) - Time.parse(current_user.created_at.to_s))/3600 
18

Pruebe la gema de la diferencia de tiempo para Ruby en https://rubygems.org/gems/time_difference

start_time = Time.new(2013,1) 
end_time = Time.new(2014,1) 
TimeDifference.between(start_time, end_time).in_years 
+0

cómo llamar a la duración solo con horas? sin pasar la fecha y el año y el mes –

+0

@HarshaMV ¿Quieres decir: '44.hours - 2.hours # => 42.hours'? –

4

Puede utilizar un Rieles método distance_of_time_in_words

distance_of_time_in_words(starting_time, ending_time, options = {include_seconds: true }) 
Cuestiones relacionadas