About Parsing Dates
To parse dates from different formats, dateutil can be used. The ISO format is YYYY-MM-DD whereas local formats might be DD/MM/YYYY and MM/DD/YYYY and many others. This is a problem, because 3.4.2020 might be the 3rd of April (in Germany) as well as the 4th of March (in USA).
To ensure that the first number is a day, there is a dayfirst argument:
from dateutil.parser import parse
my_datetime = parse(my_datetime_string, dayfirst=True)
This is all good, but since version 2.5, dateutil with dayfirst also swaps the values of the ISO format, so 2020-04-03 becomes the 4th of March. That wasn't the case in the previous dateutil versions.
To deal well with ISO and German date formats:
import re
from dateutil.parser import parse
if re.search(r'^\d\d\d\d', my_datetime_string):
# ISO date format
my_datetime = parse(my_datetime_string)
else:
# German date format
my_datetime = parse(my_datetime_string, dayfirst=True)
Tips and Tricks Programming User Experience Django 4.2 Django 3.2 Django 2.2 Python 3
Also by me
Django Paddle Subscriptions app
For Django-based SaaS projects.
Django GDPR Cookie Consent app
For Django websites that use cookies.