summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Wilber <benwilber@gmail.com>2021-05-07 20:59:17 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-06-24 10:07:55 +0200
commitfff4870bfa7ed4d9ab6be0060364b23c66ad1af0 (patch)
tree70f99726f6b99f262370af3dadddcdbbc37e1d78
parentfcb75651f9b8c2f76ec037f1a68a0e5c99263d8c (diff)
Fixed #32727 -- Allowed spaces before time zone offset in parse_datetime().
-rw-r--r--django/utils/dateparse.py2
-rw-r--r--tests/utils_tests/test_dateparse.py3
2 files changed, 4 insertions, 1 deletions
diff --git a/django/utils/dateparse.py b/django/utils/dateparse.py
index e069f5df39..47791b9331 100644
--- a/django/utils/dateparse.py
+++ b/django/utils/dateparse.py
@@ -23,7 +23,7 @@ datetime_re = _lazy_re_compile(
r'(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})'
r'[T ](?P<hour>\d{1,2}):(?P<minute>\d{1,2})'
r'(?::(?P<second>\d{1,2})(?:[\.,](?P<microsecond>\d{1,6})\d{0,6})?)?'
- r'(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$'
+ r'\s*(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$'
)
standard_duration_re = _lazy_re_compile(
diff --git a/tests/utils_tests/test_dateparse.py b/tests/utils_tests/test_dateparse.py
index 0ecbe24847..9d0f5c274c 100644
--- a/tests/utils_tests/test_dateparse.py
+++ b/tests/utils_tests/test_dateparse.py
@@ -40,6 +40,9 @@ class DateParseTests(unittest.TestCase):
('2012-04-23T10:20:30.400+02', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(120))),
('2012-04-23T10:20:30.400-02', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(-120))),
('2012-04-23T10:20:30,400-02', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(-120))),
+ ('2012-04-23T10:20:30.400 +0230', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(150))),
+ ('2012-04-23T10:20:30,400 +00', datetime(2012, 4, 23, 10, 20, 30, 400000, get_fixed_timezone(0))),
+ ('2012-04-23T10:20:30 -02', datetime(2012, 4, 23, 10, 20, 30, 0, get_fixed_timezone(-120))),
)
for source, expected in valid_inputs:
with self.subTest(source=source):