﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32727	Support spaces separaters in ISO-8601 datetimes between times and timezone strings	Ben Wilber	nobody	"According to ISO-8601, there can be any number of whitespace characters between the time strings and timezone strings.

Unfortunately the spec isn't public, but here's the link anyway https://www.iso.org/iso-8601-date-and-time-format.html.


Examples:

This is a valid ISO-8601 datetime string:

2012-04-23T10:20:30.400-02


`django.utils.dateparse.parse_datetime` parses this correctly.

This is also a valid ISO-8601 datetime string:


2012-04-23T10:20:30.400 -02

`django.utils.dateparse.parse_datetime` does not parse this correctly and returns `None`,

However, `python-dateutil` parses it correctly.  The difference is that Django uses a (brittle) regex to parse ISO-8601 datetime strings, and python-dateutil does not.

https://github.com/django/django/blob/main/django/utils/dateparse.py#L22
https://github.com/dateutil/dateutil/blob/master/dateutil/parser/isoparser.py

I would recommend that Django:

1) Depend on python-dateutil for datetime string parsing
2) Inline python-dateutils' parsing functions

As far as I know there is no regex that can parse the full spec of ISO-8601 datetime strings.


In the meantime, this is a patch to support (valid) whitespace characters between the seconds/millseconds part and the timezone string.

GitHub Pull Request: https://github.com/django/django/pull/14368"	Bug	new	Utilities	3.2	Normal				Unreviewed	0	0	0	0	0	0
