I really like dateutils, because it handles some really ugly corner cases for me, like this one:
>>> import dateutil
>>> print dateutil.__version__
2.4.2
>>> from dateutil import parser as date_parser
>>> example_date = '15/08/14,10:52:07-20q' # what my application gives me -- totally non-standard
>>> date_parser.parse(example_date[:17])
datetime.datetime(2014, 8, 15, 10, 52, 7)
Or at least, it did until version 2.5.0:
>>> import dateutil
>>> print dateutil.__version__
2.5.0
>>> from dateutil import parser as date_parser
>>> example_date = '15/08/14,10:52:07-20q'
>>> date_parser.parse(example_date[:17])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/dateutil/parser.py", line 1161, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/usr/lib/python2.7/site-packages/dateutil/parser.py", line 552, in parse
raise ValueError("Unknown string format")
ValueError: Unknown string format
I hope this is easy to fix.