2009-04-09 6 views
59

J'essaie d'obtenir la différence en heures pour deux instances de temps différentes. Je reçois ces valeurs de la base de données en tant que: colonne datetimeDifférence de temps en heures

Comment puis-je faire cela de façon à inclure les mois et les années dans le calcul tout en ignorant ou en arrondissant les minutes? Cela peut-il être fait manuellement ou y a-t-il une fonction pour le faire?

Répondre

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

ou

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

cool ... !! fonctionne bien ... – balanv

+7

Cela ne fonctionne pas pour moi. Peut-être que cela a changé depuis 2009? Maintenant, je dois faire '(date_2 - date_1) * 24' pour obtenir les heures – Jeff

+1

Fonctionne totalement bien pour moi sur Rails 4.2. – Numbers

7

Vous pouvez utiliser un bijou appelé time_diff pour obtenir la différence de temps dans des formats très utiles

10

Cela fonctionne très bien, par exemple pour le nombre d'heures écoulées depuis l'utilisateur créé compte

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

Essayez de différence de temps gem for Ruby at 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

comment appeler la durée seulement avec des heures? sans sortir la date et l'année et le mois –

+0

@HarshaMV Vous voulez dire: '44.heures - 2. heures # => 42.heures'? –

4

Vous pouvez utiliser une méthode Rails' distance_of_time_in_words

distance_of_time_in_words(starting_time, ending_time, options = {include_seconds: true }) 
Questions connexes