[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]