From 490602d6294052bf3308d9970f74e529d7e6da2b Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Thu, 26 Dec 2002 16:19:52 +0000 Subject: Fix julian day problem with strptime. Note: XXX about using 0, suggestions? --- Lib/_strptime.py | 4 +++- Lib/test/test_strptime.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Lib/_strptime.py b/Lib/_strptime.py index 896c050..b7f7577 100644 --- a/Lib/_strptime.py +++ b/Lib/_strptime.py @@ -306,12 +306,14 @@ class TimeRE(dict): def __init__(self, locale_time=LocaleTime()): """Init inst with non-locale regexes and store LocaleTime object.""" + # XXX: should 0 be valid for: + # day (d), julian day (j), month (m), and hour12 (I)? super(TimeRE,self).__init__({ # The " \d" option is to make %c from ANSI C work 'd': r"(?P3[0-1]|[0-2]\d|\d| \d)", 'H': r"(?P2[0-3]|[0-1]\d|\d)", 'I': r"(?P0\d|1[0-2]|\d)", - 'j': r"(?P(?:3[0-5]\d|6[0-6])|[0-2]\d\d|\d)", + 'j': r"(?P(?:3[0-5]\d|36[0-6])|[0-2]\d\d|\d\d|\d)", 'm': r"(?P0\d|1[0-2]|\d)", 'M': r"(?P[0-5]\d|\d)", 'S': r"(?P6[0-1]|[0-5]\d|\d)", diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py index a66b54a..83c03b4 100644 --- a/Lib/test/test_strptime.py +++ b/Lib/test/test_strptime.py @@ -379,6 +379,17 @@ class Strptime12AMPMTests(unittest.TestCase): eq(_strptime.strptime('12 AM', '%I %p')[3], 0) +class JulianTests(unittest.TestCase): + """Test a _strptime regression that all julian (1-366) are accepted""" + + def test_all_julian_days(self): + eq = self.assertEqual + # XXX: should 0 be accepted? + for i in range(1, 367): + # use 2004, since it is a leap year, we have 366 days + eq(_strptime.strptime('%d 2004' % i, '%j %Y')[7], i) + + def test_main(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(LocaleTime_Tests)) @@ -386,6 +397,7 @@ def test_main(): suite.addTest(unittest.makeSuite(StrptimeTests)) suite.addTest(unittest.makeSuite(FxnTests)) suite.addTest(unittest.makeSuite(Strptime12AMPMTests)) + suite.addTest(unittest.makeSuite(JulianTests)) test_support.run_suite(suite) -- cgit v0.12