mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix a range of values for parameters of the Time#change
Passing 999999000 < `:nsec` < 999999999 and 999999 < `:usec` < 1000000 to change a time with utc_offset doesn't throw an `ArgumentError`.
This commit is contained in:
parent
c4cb751da6
commit
d98928019a
3 changed files with 9 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
|||
* Fix a range of values for parameters of the Time#change
|
||||
|
||||
*Nikolay Kondratyev*
|
||||
|
||||
* Add `Enumerable#pluck` to get the same values from arrays as from ActiveRecord
|
||||
associations.
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ class Time
|
|||
elsif zone
|
||||
::Time.local(new_year, new_month, new_day, new_hour, new_min, new_sec, new_usec)
|
||||
else
|
||||
raise ArgumentError, 'argument out of range' if new_usec > 999999
|
||||
raise ArgumentError, 'argument out of range' if new_usec >= 1000000
|
||||
::Time.new(new_year, new_month, new_day, new_hour, new_min, new_sec + (new_usec.to_r / 1000000), utc_offset)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -149,6 +149,9 @@ class TimeExtCalculationsTest < ActiveSupport::TestCase
|
|||
assert_equal Time.local(2006,3,19,23,59,59,Rational(999999999, 1000)), Time.local(2006,3,19,10,10,10).end_of_day, 'ends DST'
|
||||
assert_equal Time.local(2006,10,1,23,59,59,Rational(999999999, 1000)), Time.local(2006,10,1,10,10,10).end_of_day, 'start DST'
|
||||
end
|
||||
with_env_tz 'Asia/Yekaterinburg' do
|
||||
assert_equal Time.local(2015, 2, 8, 23, 59, 59, Rational(999999999, 1000)), Time.new(2015, 2, 8, 8, 0, 0, '+05:00').end_of_day
|
||||
end
|
||||
end
|
||||
|
||||
def test_end_of_hour
|
||||
|
@ -389,6 +392,7 @@ class TimeExtCalculationsTest < ActiveSupport::TestCase
|
|||
assert_equal Time.local(2005,1,2,11,22,33, 8), Time.local(2005,1,2,11,22,33,44).change(:usec => 8)
|
||||
assert_equal Time.local(2005,1,2,11,22,33, 8), Time.local(2005,1,2,11,22,33,2).change(:nsec => 8000)
|
||||
assert_raise(ArgumentError) { Time.local(2005,1,2,11,22,33, 8).change(:usec => 1, :nsec => 1) }
|
||||
assert_nothing_raised(ArgumentError) { Time.new(2015, 5, 9, 10, 00, 00, '+03:00').change(nsec: 999999999) }
|
||||
end
|
||||
|
||||
def test_utc_change
|
||||
|
|
Loading…
Reference in a new issue