mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #5571 from jarkko/5559-fix-dst-jump-bug-on-master
[#5559] Do not black out the system timezone DST jump hour if Time.zone ...
This commit is contained in:
commit
1c3e5bee3d
2 changed files with 23 additions and 0 deletions
|
@ -271,7 +271,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