mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
[#5559] Do not black out the system timezone DST jump hour if Time.zone differs from that.
The system timezone DST jump hour should not be blacked out by Time.zone.parse if current Time.zone does not do the jump at that time. Fixes #5559.
This commit is contained in:
parent
014498e1d7
commit
03becb1309
2 changed files with 23 additions and 0 deletions
|
@ -268,7 +268,12 @@ module ActiveSupport
|
|||
date_parts = Date._parse(str)
|
||||
return if date_parts.empty?
|
||||
time = Time.parse(str, now) rescue DateTime.parse(str)
|
||||
|
||||
if date_parts[:offset].nil?
|
||||
if date_parts[:hour] && time.hour != date_parts[:hour]
|
||||
time = DateTime.parse(str)
|
||||
end
|
||||
|
||||
ActiveSupport::TimeWithZone.new(nil, self, time)
|
||||
else
|
||||
time.in_time_zone(self)
|
||||
|
|
|
@ -203,6 +203,24 @@ class TimeZoneTest < ActiveSupport::TestCase
|
|||
assert_equal Time.utc(1999,12,31,19), twz.time
|
||||
end
|
||||
|
||||
def test_parse_should_not_black_out_system_timezone_dst_jump
|
||||
zone = ActiveSupport::TimeZone['Pacific Time (US & Canada)']
|
||||
zone.stubs(:now).returns(zone.now)
|
||||
Time.stubs(:parse).with('2012-03-25 03:29', zone.now).
|
||||
returns(Time.local(0,29,4,25,3,2012,nil,nil,true,"+03:00"))
|
||||
twz = zone.parse('2012-03-25 03:29')
|
||||
assert_equal [0, 29, 3, 25, 3, 2012], twz.to_a[0,6]
|
||||
end
|
||||
|
||||
def test_parse_should_black_out_app_timezone_dst_jump
|
||||
zone = ActiveSupport::TimeZone['Pacific Time (US & Canada)']
|
||||
zone.stubs(:now).returns(zone.now)
|
||||
Time.stubs(:parse).with('2012-03-11 02:29', zone.now).
|
||||
returns(Time.local(0,29,2,11,3,2012,nil,nil,false,"+02:00"))
|
||||
twz = zone.parse('2012-03-11 02:29')
|
||||
assert_equal [0, 29, 3, 11, 3, 2012], twz.to_a[0,6]
|
||||
end
|
||||
|
||||
def test_utc_offset_lazy_loaded_from_tzinfo_when_not_passed_in_to_initialize
|
||||
tzinfo = TZInfo::Timezone.get('America/New_York')
|
||||
zone = ActiveSupport::TimeZone.create(tzinfo.name, nil, tzinfo)
|
||||
|
|
Loading…
Reference in a new issue