2010-05-17 22 views

Antwort

31

(time1 - time2)/60

Wenn die Zeitobjekte sind string, sie Time.parse(time) erste

+3

sollte es nicht mehr als 24 * 60 * werden? – mscccc

+7

Hängt davon ab, ob die Objekte Zeitobjekte oder Datumsobjekte sind. Zeit # - gibt die Anzahl der Sekunden zurück, während Datum # - die Anzahl der Tage zurückgibt. –

55

Wenn Sie zwei Datum oder Datetime-Objekte subtrahieren, ist das Ergebnis ein Rational das Vorstellen Anzahl der Tage zwischen ihnen. Was Sie brauchen, ist:

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

oder

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

Nicht sicher, ob es sich zwischen den Versionen geändert hat (Chubas 'Antwort ist im Internet üblich), aber ab Version 1.9.3p364 ist dies die richtige Antwort. – Ephemera

+0

Ich denke meine Antwort ist korrekt seit vor 1.9.3 veröffentlicht wurde :) –

+0

Der zweite Teil der Antwort ist nicht korrekt. 'DateTime' gibt die Anzahl der Sekunden zurück, und die akzeptierte Antwort sollte in diesem Fall angewendet werden - das heißt' (DateTime.new - DateTime.new)/60' – Aleks

Verwandte Themen