ruby-changes:42573
From: sonots <ko1@a...>
Date: Tue, 19 Apr 2016 12:24:12 +0900 (JST)
Subject: [ruby-changes:42573] sonots:r54647 (trunk): * lib/time.rb: revert r54167 because it would break
sonots 2016-04-19 13:20:48 +0900 (Tue, 19 Apr 2016) New Revision: 54647 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=54647 Log: * lib/time.rb: revert r54167 because it would break backward compatibilities, and it is documented that Time.parse does not take into account time zone abbreations other than ones described in RFC 822 Modified files: trunk/ChangeLog trunk/lib/time.rb trunk/test/test_time.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 54646) +++ ChangeLog (revision 54647) @@ -1,3 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Apr 19 13:18:12 2016 Naotoshi Seo <sonots@g...> + + * lib/time.rb: revert r54167 because it would break + backward compatibilities, and it is documented that + Time.parse does not take into account time zone + abbreations other than ones described in RFC 822 + Tue Apr 19 13:12:03 2016 Naotoshi Seo <sonots@g...> * ChangeLog: Fix dates of previous commits Index: test/test_time.rb =================================================================== --- test/test_time.rb (revision 54646) +++ test/test_time.rb (revision 54647) @@ -429,23 +429,6 @@ class TestTimeExtension < Test::Unit::Te https://github.com/ruby/ruby/blob/trunk/test/test_time.rb#L429 assert_equal(500000, Time.parse("2000-01-01T00:00:00.5+00:00").tv_usec) end - def test_parse_with_zone - t = Time.parse('2000-01-01T00:00:00 CET') - assert_equal(2000, t.year) - assert_equal(1, t.mon) - assert_equal(1, t.day) - assert_equal(0, t.hour) - assert_equal(0, t.min) - assert_equal(0, t.sec) - assert_equal(3600, t.utc_offset) - assert_equal(false, t.utc?) - - Time.instance_eval("ZoneOffset").each do |zone, offset| - t = Time.parse("2000-01-01T00:00:00 #{zone}") - assert_equal(offset*3600, t.utc_offset) - end - end - def test_strptime assert_equal(Time.utc(2005, 8, 28, 06, 54, 20), Time.strptime("28/Aug/2005:06:54:20 +0000", "%d/%b/%Y:%T %z")) assert_equal(Time.at(1).localtime, Time.strptime("1", "%s")) @@ -496,21 +479,6 @@ class TestTimeExtension < Test::Unit::Te https://github.com/ruby/ruby/blob/trunk/test/test_time.rb#L479 assert_equal(0, t.sec) assert_equal(0, t.utc_offset) assert_equal(true, t.utc?) - - t = Time.strptime('20010203 CET', '%Y%m%d %z') - assert_equal(2001, t.year) - assert_equal(2, t.mon) - assert_equal(3, t.day) - assert_equal(0, t.hour) - assert_equal(0, t.min) - assert_equal(0, t.sec) - assert_equal(3600, t.utc_offset) - assert_equal(false, t.utc?) - - Time.instance_eval("ZoneOffset").each do |zone, offset| - t = Time.strptime("2000-01-01 #{zone}", '%Y-%m-%d %z') - assert_equal(offset*3600, t.utc_offset) - end end def test_nsec Index: lib/time.rb =================================================================== --- lib/time.rb (revision 54646) +++ lib/time.rb (revision 54647) @@ -249,18 +249,14 @@ class Time https://github.com/ruby/ruby/blob/trunk/lib/time.rb#L249 end private :apply_offset - def make_time(date, year, mon, day, hour, min, sec, sec_fraction, zone, offset, now) + def make_time(date, year, mon, day, hour, min, sec, sec_fraction, zone, now) if !year && !mon && !day && !hour && !min && !sec && !sec_fraction raise ArgumentError, "no time information in #{date.inspect}" end + off_year = year || now.year off = nil - if offset - off = offset - else - off_year = year || now.year - off = zone_offset(zone, off_year) if zone - end + off = zone_offset(zone, off_year) if zone if off now = now.getlocal(off) if now.utc_offset != off @@ -291,10 +287,8 @@ class Time https://github.com/ruby/ruby/blob/trunk/lib/time.rb#L287 sec ||= 0 usec ||= 0 - off = nil - if offset - off = offset - elsif year != off_year + if year != off_year + off = nil off = zone_offset(zone, year) if zone end @@ -369,7 +363,7 @@ class Time https://github.com/ruby/ruby/blob/trunk/lib/time.rb#L363 d = Date._parse(date, comp) year = d[:year] year = yield(year) if year && !comp - make_time(date, year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], d[:offset], now) + make_time(date, year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now) end # @@ -447,7 +441,7 @@ class Time https://github.com/ruby/ruby/blob/trunk/lib/time.rb#L441 else year = d[:year] year = yield(year) if year && block_given? - t = make_time(date, year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], d[:offset], now) + t = make_time(date, year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now) end t end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/