#32727: Support spaces separaters in ISO-8601 datetimes between times and 
timezone
strings
----------------------------+--------------------------------------
     Reporter:  Ben Wilber  |                    Owner:  nobody
         Type:  Bug         |                   Status:  new
    Component:  Utilities   |                  Version:  3.2
     Severity:  Normal      |               Resolution:
     Keywords:              |             Triage Stage:  Unreviewed
    Has patch:  0           |      Needs documentation:  0
  Needs tests:  0           |  Patch needs improvement:  0
Easy pickings:  0           |                    UI/UX:  0
----------------------------+--------------------------------------
Description changed by Ben Wilber:

Old description:

> 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's `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's `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/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

New description:

 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/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

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32727#comment:6>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.64604ebcc06bef8da2760d9769350d03%40djangoproject.com.

Reply via email to