Rails's ActiveSupport package lets you say some_date + 72.months. It's that
simple; the secret unit of exchange is probably seconds.
If this were Brand X, using another platform's low-level library would be
eternal torment, but this is Ruby, so just try require 'active_support'!
Depending on how accurate you actually want, active_support's 72.months
assumes 30 days in a month. Here's a quick comparison of adding 72
months in different libraries:
% cat time-test.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'active_support'
require 'chronic'
today_time = Time.now
today_dt = DateTime.now
format = "%Y-%m-%d %H:%M:%S"
puts "Calculate the date of 72 months from today : #{today_time.strftime(format)}"
puts "ActiveSupport (today (Time) + 72.months) : #{(today_time + 72.months).strftime(format)}"
puts "ActiveSupport (today (Time) + 6.years) : #{(today_time + 6.years).strftime(format)}"
puts "Chronic.parse '72 months from now' : #{Chronic.parse('72 months from now').strftime(format)}"
puts "DateTime.now >> 72 : #{(today_dt >> 72).strftime(format)}"
% ruby time-test.rb
Calculate the date of 72 months from today : 2007-09-10 11:32:14
ActiveSupport (today (Time) + 72.months) : 2013-08-09 11:32:14
ActiveSupport (today (Time) + 6.years) : 2013-09-09 23:32:14
Chronic.parse '72 months from now' : 2013-09-10 11:32:14
DateTime.now >> 72 : 2013-09-10 11:32:14
As you can see, there is some disparity. From my perspective, the only ones of
these that are actually correct are the Chronic and the DateTime ones.
Is there a really good date calculation library in ruby that I'm missing?
enjoy,
-jeremy