2010-05-17 11 views

Répondre

31

(time1 - time2)/60

Si les objets de temps sont chaîne, Time.parse(time) les premiers

+3

devrait pas être * 24 * 60? – mscccc

+7

Cela dépend si les objets en question sont des objets Heure ou des objets Date. Time # - renvoie le nombre de secondes, tandis que Date # - renvoie le nombre de jours. –

55

Si vous soustrayez deux objets Date ou DateTime, le résultat est un rationnel représentant la nombre de jours entre eux. Qu'est-ce que vous avez besoin est:

a = Date.new(2009, 10, 13) - Date.new(2009, 10, 11) 
(a * 24 * 60).to_i # 2880 minutes 

ou

a = DateTime.new(2009, 10, 13, 12, 0, 0) - DateTime.new(2009, 10, 11, 0, 0, 0) 
(a * 24 * 60).to_i # 3600 minutes 
+0

Je ne sais pas si cela a peut-être changé entre les versions (la réponse de Chubas est courante sur Internet), mais à partir de la version 1.9.3p364, c'est la bonne réponse. – Ephemera

+0

Je pense que ma réponse a été correcte depuis qu'avant 1.9.3 a été publié :) –

+0

La deuxième partie de la réponse n'est pas correcte. 'DateTime' renvoie le nombre de secondes, et la réponse acceptée doit être appliquée dans ce cas - signifiant' (DateTime.new - DateTime.new)/60' – Aleks

Questions connexes