Kaydet (Commit) 490602d6 authored tarafından Neal Norwitz's avatar Neal Norwitz

Fix julian day problem with strptime. Note: XXX about using 0, suggestions?

üst 4c0db788
......@@ -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"(?P<d>3[0-1]|[0-2]\d|\d| \d)",
'H': r"(?P<H>2[0-3]|[0-1]\d|\d)",
'I': r"(?P<I>0\d|1[0-2]|\d)",
'j': r"(?P<j>(?:3[0-5]\d|6[0-6])|[0-2]\d\d|\d)",
'j': r"(?P<j>(?:3[0-5]\d|36[0-6])|[0-2]\d\d|\d\d|\d)",
'm': r"(?P<m>0\d|1[0-2]|\d)",
'M': r"(?P<M>[0-5]\d|\d)",
'S': r"(?P<S>6[0-1]|[0-5]\d|\d)",
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment