aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/time.rb16
-rw-r--r--test/test_time.rb5
3 files changed, 22 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 75f0bc1acd..de5d3d1100 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Nov 5 22:51:06 2016 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (make_time): "now" argument as nil works again.
+ This is broken since Ruby 2.2.
+ Mathieu Jobin pointed a problem.
+ https://github.com/ruby/ruby/commit/e4b05d91eb0d48fd172abf015c493bb42d755d07#commitcomment-17421387
+
Sat Nov 5 22:50:13 2016 Akinori MUSHA <knu@iDaemons.org>
* lib/ipaddr.rb (IPAddr#==): If coercion fails, return false
diff --git a/lib/time.rb b/lib/time.rb
index 69e524fd61..5179e9fee4 100644
--- a/lib/time.rb
+++ b/lib/time.rb
@@ -254,14 +254,18 @@ class Time
raise ArgumentError, "no time information in #{date.inspect}"
end
- off_year = year || now.year
off = nil
- off = zone_offset(zone, off_year) if zone
+ if year || now
+ off_year = year || now.year
+ off = zone_offset(zone, off_year) if zone
+ end
- if off
- now = now.getlocal(off) if now.utc_offset != off
- else
- now = now.getlocal
+ if now
+ if off
+ now = now.getlocal(off) if now.utc_offset != off
+ else
+ now = now.getlocal
+ end
end
usec = nil
diff --git a/test/test_time.rb b/test/test_time.rb
index 0a6659f152..398ab7279b 100644
--- a/test/test_time.rb
+++ b/test/test_time.rb
@@ -338,6 +338,11 @@ class TestTimeExtension < Test::Unit::TestCase # :nodoc:
assert_equal(t1.utc?, t2.utc?)
end
+ def test_parse_now_nil
+ assert_equal(Time.new(2000,1,1,0,0,0,"+11:00"),
+ Time.parse("2000-01-01T00:00:00+11:00", nil))
+ end
+
def test_parse_leap_second
t = Time.utc(1998,12,31,23,59,59)
assert_equal(t, Time.parse("Thu Dec 31 23:59:59 UTC 1998"))