mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Time#change
should pass the zone
property through if it's set
This commit is contained in:
parent
32488129e9
commit
d132095ce7
3 changed files with 18 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
|||
* `Time#change` and methods that call it (eg. `Time#advance`) will now
|
||||
return a `Time` with the timezone argument provided, if the caller was
|
||||
initialized with a timezone argument.
|
||||
|
||||
Fixes [#42467](https://github.com/rails/rails/issues/42467).
|
||||
|
||||
*Alex Ghiculescu*
|
||||
|
||||
* Allow serializing any module or class to JSON by name
|
||||
|
||||
*Tyler Rick*, *Zachary Scott*
|
||||
|
|
|
@ -159,6 +159,8 @@ class Time
|
|||
::Time.new(new_year, new_month, new_day, new_hour, new_min, new_sec, new_offset)
|
||||
elsif utc?
|
||||
::Time.utc(new_year, new_month, new_day, new_hour, new_min, new_sec)
|
||||
elsif zone&.respond_to?(:utc_to_local)
|
||||
::Time.new(new_year, new_month, new_day, new_hour, new_min, new_sec, zone)
|
||||
elsif zone
|
||||
::Time.local(new_year, new_month, new_day, new_hour, new_min, new_sec)
|
||||
else
|
||||
|
|
|
@ -483,6 +483,14 @@ class TimeExtCalculationsTest < ActiveSupport::TestCase
|
|||
assert_equal Time.local(2005, 2, 28, 20, 22, 19), Time.local(2005, 2, 28, 15, 15, 10).advance(hours: 5, minutes: 7, seconds: 9)
|
||||
assert_equal Time.local(2005, 2, 28, 10, 8, 1), Time.local(2005, 2, 28, 15, 15, 10).advance(hours: -5, minutes: -7, seconds: -9)
|
||||
assert_equal Time.local(2013, 10, 17, 20, 22, 19), Time.local(2005, 2, 28, 15, 15, 10).advance(years: 7, months: 19, weeks: 2, days: 5, hours: 5, minutes: 7, seconds: 9)
|
||||
|
||||
assert_equal Time.new(2021, 5, 29, 0, 0, 0, "+03:00"), Time.new(2021, 5, 29, 0, 0, 0, ActiveSupport::TimeZone["Moscow"])
|
||||
assert_equal Time.new(2021, 5, 29, 0, 0, 0, "+03:00").advance(seconds: 60), Time.new(2021, 5, 29, 0, 0, 0, ActiveSupport::TimeZone["Moscow"]).advance(seconds: 60)
|
||||
assert_equal Time.new(2021, 5, 29, 0, 0, 0, "+03:00").advance(days: 3), Time.new(2021, 5, 29, 0, 0, 0, ActiveSupport::TimeZone["Moscow"]).advance(days: 3)
|
||||
|
||||
assert_equal Time.new(2021, 5, 29, 0, 0, 0, "+03:00"), ActiveSupport::TimeZone["Moscow"].local(2021, 5, 29, 0, 0, 0)
|
||||
assert_equal Time.new(2021, 5, 29, 0, 0, 0, "+03:00").advance(seconds: 60), ActiveSupport::TimeZone["Moscow"].local(2021, 5, 29, 0, 0, 0).advance(seconds: 60)
|
||||
assert_equal Time.new(2021, 5, 29, 0, 0, 0, "+03:00").advance(days: 3), ActiveSupport::TimeZone["Moscow"].local(2021, 5, 29, 0, 0, 0).advance(days: 3)
|
||||
end
|
||||
|
||||
def test_utc_advance
|
||||
|
|
Loading…
Reference in a new issue