Sometimes the Rails helper #distance_of_time_in_words is using too much magic.
When you need a time difference in a specific unit, use this method:
^
def distance_of_time_in(unit, from, to)
diff = to - from
  if 1.respond_to? unit
    distance = diff / 1.send(unit)
    distance.abs.round
  else
    raise ArgumentError, "#{unit.inspect} is not supported as unit"
  end
end
distance_of_time_in(:days, Time.now, 1.year.ago)
=> 365
Remove the .abs if you want the mathematical difference.
Posted by Dominik Schöler to makandra dev (2011-08-22 10:31)