aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2012-12-04 14:13:15 +0000
committerAndrew White <andyw@pixeltrix.co.uk>2012-12-04 14:21:52 +0000
commitfbf23ed9338f935736dd840ea973fd6372b6ab7d (patch)
tree30c6f25c3158d979a80bb9ac7582175838b8d568 /actionpack/lib
parent18e12273121d5d46be9d87b07cd9935edc58472a (diff)
downloadrails-fbf23ed9338f935736dd840ea973fd6372b6ab7d.tar.gz
rails-fbf23ed9338f935736dd840ea973fd6372b6ab7d.tar.bz2
rails-fbf23ed9338f935736dd840ea973fd6372b6ab7d.zip
Make distance_of_time_in_words work with DateTime offsets
Because DateTime#to_time returns self when it has a non-zero offset and subtracting two DateTime instances returns a Rational then the distance_of_time_in_words methods outputs an incorrect value. This is fixed in master because we can rely on Ruby 1.9.3's implementation of to_time but it can't be fixed on Ruby 1.8.7 as there is no way to map the DateTime to a Time with a non-zero offset. We can workaround the problem by casting to Float before doing the subtraction in the distance_of_time_in_words method. Closes #8390
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_view/helpers/date_helper.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/actionpack/lib/action_view/helpers/date_helper.rb b/actionpack/lib/action_view/helpers/date_helper.rb
index e5a27389f1..99aa144d3a 100644
--- a/actionpack/lib/action_view/helpers/date_helper.rb
+++ b/actionpack/lib/action_view/helpers/date_helper.rb
@@ -71,8 +71,9 @@ module ActionView
from_time = from_time.to_time if from_time.respond_to?(:to_time)
to_time = to_time.to_time if to_time.respond_to?(:to_time)
- distance_in_minutes = (((to_time - from_time).abs)/60.0).round
- distance_in_seconds = ((to_time - from_time).abs).round
+ distance = (to_time.to_f - from_time.to_f).abs
+ distance_in_minutes = (distance / 60.0).round
+ distance_in_seconds = distance.round
I18n.with_options :locale => options[:locale], :scope => options[:scope] do |locale|
case distance_in_minutes