aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorAndrew White <andrew.white@unboxedconsulting.com>2016-04-23 17:15:26 +0100
committerAndrew White <andrew.white@unboxedconsulting.com>2016-04-23 17:15:26 +0100
commit7fb2a637086ae5e4cb8d06582ed7d9b29a6a4f58 (patch)
treeb7cd114b5bce9c6b80bb7393a198dc05c770f6f7 /activesupport
parentf5dcc141ec19ae585326f5b424b81c0217a386c0 (diff)
downloadrails-7fb2a637086ae5e4cb8d06582ed7d9b29a6a4f58.tar.gz
rails-7fb2a637086ae5e4cb8d06582ed7d9b29a6a4f58.tar.bz2
rails-7fb2a637086ae5e4cb8d06582ed7d9b29a6a4f58.zip
Add Time#sec_fraction
Mirrors the DateTime#sec_fraction method by returning the fraction of the second as a Rational.
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/CHANGELOG.md4
-rw-r--r--activesupport/lib/active_support/core_ext/time/calculations.rb7
2 files changed, 11 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md
index 23ca8246e2..1056b6696f 100644
--- a/activesupport/CHANGELOG.md
+++ b/activesupport/CHANGELOG.md
@@ -1,3 +1,7 @@
+* Add `Time#sec_fraction` to return the fraction of a second as a `Rational`.
+
+ *Andrew White*
+
* Add `ActiveSupport.to_time_preserves_timezone` config option to control
how `to_time` handles timezones. In Ruby 2.4+ the behavior will change
from converting to the local system timezone to preserving the timezone
diff --git a/activesupport/lib/active_support/core_ext/time/calculations.rb b/activesupport/lib/active_support/core_ext/time/calculations.rb
index 768c9a1b2c..9c019e10b5 100644
--- a/activesupport/lib/active_support/core_ext/time/calculations.rb
+++ b/activesupport/lib/active_support/core_ext/time/calculations.rb
@@ -73,6 +73,13 @@ class Time
end_of_day.to_i - to_i
end
+ # Returns the fraction of a second as a +Rational+
+ #
+ # Time.new(2012, 8, 29, 0, 0, 0.5).sec_fraction # => (1/2)
+ def sec_fraction
+ Rational(nsec, 1000000000)
+ end
+
# Returns a new Time where one or more of the elements have been changed according
# to the +options+ parameter. The time options (<tt>:hour</tt>, <tt>:min</tt>,
# <tt>:sec</tt>, <tt>:usec</tt>, <tt>:nsec</tt>) reset cascadingly, so if only