提交 03becb13 编写于 作者: J Jarkko Laine

[#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.
上级 014498e1
......@@ -268,7 +268,12 @@ def parse(str, now=now)
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 @@ def test_parse_with_incomplete_date
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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册