From a9d4f2d03c847ec1c89dc03a5076a9fa29ffa61f Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Fri, 21 Jun 2019 10:33:06 -0700 Subject: Support %U/%u/%W/%w/%V/%g/%G formats in Time.strptime Most of these formats were documented as supported, but were not actually supported. Document that %g and %G are supported. If %U/%W is specified without yday and mon/mday are not specified, then Date.strptime is used to get the appropriate yday. If cwyear is specifier without the year, or cwday and cweek are specified without mday and mon, then use Date.strptime and convert the resulting value to Time, since Time.make_time cannot handle those conversions Fixes [Bug #9836] Fixes [Bug #14241] --- test/test_time.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test') diff --git a/test/test_time.rb b/test/test_time.rb index e4fea31945..ca20788aac 100644 --- a/test/test_time.rb +++ b/test/test_time.rb @@ -528,6 +528,17 @@ class TestTimeExtension < Test::Unit::TestCase # :nodoc: assert_equal(15, t.hour) end + def test_strptime_wuvg + assert_equal(Time.local(2019, 1, 30), Time.strptime("3 4 2019", "%w %W %Y")) + assert_equal(Time.local(2019, 2, 7), Time.strptime("4 5 2019", "%u %U %Y")) + assert_equal(Time.local(2019, 1, 28), Time.strptime("4 2019", "%W %Y")) + assert_equal(Time.local(2019, 2, 3), Time.strptime("5 2019", "%U %Y")) + assert_equal(Time.local(2019, 1, 1), Time.strptime("1 2 2019", "%V %w %G")) + assert_equal(Time.local(2016, 1, 1), Time.strptime("53 5 15", "%V %w %g")) + assert_equal(Time.local(2018, 12, 31), Time.strptime("1 2019", "%V %G")) + assert_equal(Time.local(2015, 12, 28), Time.strptime("53 15", "%V %g")) + end + def test_nsec assert_equal(123456789, Time.parse("2000-01-01T00:00:00.123456789+00:00").tv_nsec) end -- cgit v1.2.3