summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-05-10 18:18:46 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-05-10 18:18:46 (GMT)
commite8751e05d92e2b001b13729dfbe6dd18791de67b (patch)
treec970aa0c9c799e77caa38dad9cdcf26cace3a201
parent59d5404bc79beaa39c76fb26012238b26e9b0166 (diff)
parent1682e5d74080d88109b3fc54e2ddfa762feb3e1d (diff)
downloadcpython-e8751e05d92e2b001b13729dfbe6dd18791de67b.zip
cpython-e8751e05d92e2b001b13729dfbe6dd18791de67b.tar.gz
cpython-e8751e05d92e2b001b13729dfbe6dd18791de67b.tar.bz2
Issue #14157: Fix time.strptime failing without a year on February 29th.
Patch by Hynek Schlawack.
-rw-r--r--Lib/_strptime.py6
-rw-r--r--Lib/test/test_strptime.py3
-rw-r--r--Misc/NEWS3
3 files changed, 11 insertions, 1 deletions
diff --git a/Lib/_strptime.py b/Lib/_strptime.py
index 0ea4c43..0106e91 100644
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -339,7 +339,7 @@ def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
raise ValueError("unconverted data remains: %s" %
data_string[found.end():])
- year = 1900
+ year = None
month = day = 1
hour = minute = second = fraction = 0
tz = -1
@@ -444,6 +444,10 @@ def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
else:
tz = value
break
+ if year is None and month == 2 and day == 29:
+ year = 1904 # 1904 is first leap year of 20th century
+ elif year is None:
+ year = 1900
# If we know the week of the year and what day of that week, we can figure
# out the Julian day of the year.
if julian == -1 and week_of_year != -1 and weekday != -1:
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index 98d759b..7245671 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -378,6 +378,9 @@ class StrptimeTests(unittest.TestCase):
need_escaping = ".^$*+?{}\[]|)("
self.assertTrue(_strptime._strptime_time(need_escaping, need_escaping))
+ def test_feb29_on_leap_year_without_year(self):
+ time.strptime("Feb 29", "%b %d")
+
class Strptime12AMPMTests(unittest.TestCase):
"""Test a _strptime regression in '%I %p' at 12 noon (12 PM)"""
diff --git a/Misc/NEWS b/Misc/NEWS
index d123c01..6ef5154 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -23,6 +23,9 @@ Core and Builtins
Library
-------
+- Issue #14157: Fix time.strptime failing without a year on February 29th.
+ Patch by Hynek Schlawack.
+
- Issue #14753: Make multiprocessing's handling of negative timeouts
the same as it was in Python 3.2.