Вы хотите Date
вместо Time
:
require 'date'
now = Date.today
before = Date.civil(2000, 1, 1)
difference_in_days = (now - before).to_i
(difference_in_days/365.25).to_i
Даст вам разницу в годах между сегодняшним днем и 1 января 2000 года.может быть улучшен, я просто использовал среднее количество дней в году (365,25), что даст вам правильный ответ, за исключением крайних случаев.
Вы также можете сделать что-то вроде этого:
require 'date'
years = 0
d = Date.civil(2000, 1, 1)
loop do
d = d.next_year
break if Date.today < d
years += 1
end
Но Date#next_year
был введен в Ruby 1.9, поэтому он не будет работать в 1.8.7.
Конечно, самый простой способ определить количество лет между двумя датами - просто вычестьцифры:
2010 - 2000 # => 10