From dc2a979b7fa22f8f86c19606d5a729eb22130ba7 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 28 May 2018 15:35:08 +0000 Subject: time.rb: fix parsing time zone in iso8601 * lib/time.rb (Time.xmlschema): the minute in time zone designator can be omitted together with the preceding colon. [ruby-core:87277] [Bug #14790] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/time.rb | 2 +- test/test_time.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/time.rb b/lib/time.rb index d945e876ae..e227166c47 100644 --- a/lib/time.rb +++ b/lib/time.rb @@ -571,7 +571,7 @@ class Time T (\d\d):(\d\d):(\d\d) (\.\d+)? - (Z|[+-]\d\d:?\d\d)? + (Z|[+-]\d\d(?::?\d\d)?)? \s*\z/ix =~ date year = $1.to_i mon = $2.to_i diff --git a/test/test_time.rb b/test/test_time.rb index d01d74eb52..26a7daaf2a 100644 --- a/test/test_time.rb +++ b/test/test_time.rb @@ -106,6 +106,7 @@ class TestTimeExtension < Test::Unit::TestCase # :nodoc: s = "1996-12-19T16:39:57-08:00" assert_equal(t, Time.__send__(method, s)) assert_equal(t, Time.__send__(method, s.sub(/:(?=00\z)/, ''))) + assert_equal(t, Time.__send__(method, s.sub(/:00\z/, ''))) # There is no way to generate time string with arbitrary timezone. s = "1996-12-20T00:39:57Z" assert_equal(t, Time.__send__(method, s)) -- cgit v1.2.3