La respuesta de ezpz es casi perfecta, pero espero poder agregar un poco más.
Geo preguntó por el tiempo en milisegundos; esto suena como una cantidad entera, y no tomaría el desvío a través de tierra flotante. Por tanto, mi enfoque sería:
irb(main):038:0> t8 = Time.now
=> Sun Nov 01 15:18:04 +0100 2009
irb(main):039:0> t9 = Time.now
=> Sun Nov 01 15:18:18 +0100 2009
irb(main):040:0> dif = t9 - t8
=> 13.940166
irb(main):041:0> (1000 * dif).to_i
=> 13940
Multiplicando por un número entero 1000 conserva el número fraccionario perfectamente y puede ser un poco más rápido.
Si tiene fechas y horas, puede necesitar utilizar la clase DateTime. Esto funciona de manera similar, pero el factor de conversión es 24 * 3600 * 1000 = .
que he encontrado de DateTime strptime y strftime funciones de valor incalculable en las cadenas de fecha/hora de análisis y de formato (por ejemplo a/desde logs). Lo que es muy útil saber es:
Los caracteres de formato para estas funciones (% H,% M,% S, ...) son casi los mismos que para las funciones C encontradas en cualquier sistema Unix/Linux; y
Hay algunos más: en particular, % L hace milisegundos!
agregue un to_i y lo tiene como un entero, por ejemplo: ((finish - start) * 1000.0) .to_i –
'finish.to_f - start.to_f'? – bodacious
'finish - start' cede el punto flotante; '.to_f' sería redundante. – ezpz