I'm using dateutil.parser.parse
to format a date from a string. But now it mixes up the month and the day.
I have a string that contains 05.01.2015
. After
dateutil.parser.parse("05.01.2015")
it returns:
datetime.datetime(2015, 5, 1, 0, 0)
I hoped the it would return (2015, 1, 5, 0, 0)
How can I tell the code that the format is dd.mm.yyyy
?
For the record, 25.01.2015
will be parsed as (2015, 1, 25, 0, 0)
, as expected.
Specify
dayfirst=True
:This gives precedence to the DD-MM-YYYY format instead of MM-DD-YYYY in cases where the date format is ambiguous (e.g. when the day is 12 or lower). The function is documented here.
You asked, 'How can I tell the code that the format is dd.mm.yyyy?'
Since you have already imported
dateutil
then most direct answer might be to specify the format of the date string but this is quite ugly code:We can see an obvious alternative embedded in the code. You could use that directly.
There are also some newer alternative libraries that offer methods and properties aplenty.
Simplest to use in this case would be
arrow
:Although I find the formatting for arrow easier to remember, pendulum uses Python's old formatting system which might save you having to learn arrow's.