This latest version of the gem works with ActiveSupport 5.1. For prior version, check out v0.6.x-activesupport42
TimeDifference is the missing Ruby method to calculate difference between two given time. You can do a Ruby time difference in year, month, week, day, hour, minute, and seconds.
Add this line to your application's Gemfile:
gem 'time_difference'
And then execute:
$ bundle install
# Time
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
=> 1.0
# DateTime
start_time = DateTime.new(2013,1)
end_time = DateTime.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
=> 1.0
# Date
start_time = Date.new(2013,1)
end_time = Date.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
=> 1.0
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
=> 1.0
TimeDifference.between(start_time, end_time).in_months
=> 12.0
TimeDifference.between(start_time, end_time).in_weeks
=> 52.14
TimeDifference.between(start_time, end_time).in_days
=> 365.0
TimeDifference.between(start_time, end_time).in_hours
=> 8760.0
TimeDifference.between(start_time, end_time).in_minutes
=> 525600.0
TimeDifference.between(start_time, end_time).in_seconds
=> 31536000.0
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_each_component
=> {:years=>1.0, :months=>12.0, :weeks=>52.14, :days=>365.0, :hours=>8760.0, :minutes=>525600.0, :seconds=>31536000.0}
in_general
(not that accurate)start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_general
=> {:years=>0, :months=>12, :weeks=>0, :days=>5, :hours=>0, :minutes=>0, :seconds=>0}
in_general
as a human readable string, using humanize
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).humanize
=> "12 Months and 5 Days"
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)