Python dateutil.parser.parse 先解析月,而不是日
Python dateutil.parser.parse parses month first, not day
我正在使用 dateutil.parser.parse
从字符串格式化日期。但现在它混淆了月份和日期。
我有一个包含 05.01.2015
的字符串。之后
dateutil.parser.parse("05.01.2015")
它returns:
datetime.datetime(2015, 5, 1, 0, 0)
我希望它会 return (2015, 1, 5, 0, 0)
如何告诉代码格式是dd.mm.yyyy
?
郑重声明,25.01.2015
将按预期解析为 (2015, 1, 25, 0, 0)
。
指定dayfirst=True
:
>>> dateutil.parser.parse("05.01.2015", dayfirst=True)
datetime.datetime(2015, 1, 5, 0, 0)
在日期格式不明确的情况下(例如,当日期为 12 或更小时),这会优先使用 DD-MM-YYYY 格式而不是 MM-DD-YYYY。该功能记录在案 here.
你问了,'How can I tell the code that the format is dd.mm.yyyy?'
因为你已经导入了 dateutil
那么大多数 直接 答案可能是指定日期字符串的格式,但这是非常丑陋的代码:
>>> dateutil.parser.datetime.datetime.strptime(date_string, '%d.%m.%Y')
datetime.datetime(2015, 1, 5, 0, 0)
我们可以看到代码中嵌入了一个明显的替代方案。你可以直接使用它。
>>> from datetime import datetime
>>> datetime.strptime(date_string, '%d.%m.%Y')
datetime.datetime(2015, 1, 5, 0, 0)
还有一些较新的替代库提供了大量的方法和属性。
在这种情况下最简单的使用方法是 arrow
:
>>> import arrow
>>> arrow.get(date_string, 'DD.MM.YYYY')
<Arrow [2015-01-05T00:00:00+00:00]>
虽然我发现 arrow easier to remember, pendulum 的格式使用 Python 的旧格式系统,这可能会让您不必学习箭头的格式。
>>> import pendulum
>>> pendulum.datetime.strptime(date_string, '%d.%m.%Y')
<Pendulum [2015-01-05T00:00:00+00:00]>
我正在使用 dateutil.parser.parse
从字符串格式化日期。但现在它混淆了月份和日期。
我有一个包含 05.01.2015
的字符串。之后
dateutil.parser.parse("05.01.2015")
它returns:
datetime.datetime(2015, 5, 1, 0, 0)
我希望它会 return (2015, 1, 5, 0, 0)
如何告诉代码格式是dd.mm.yyyy
?
郑重声明,25.01.2015
将按预期解析为 (2015, 1, 25, 0, 0)
。
指定dayfirst=True
:
>>> dateutil.parser.parse("05.01.2015", dayfirst=True)
datetime.datetime(2015, 1, 5, 0, 0)
在日期格式不明确的情况下(例如,当日期为 12 或更小时),这会优先使用 DD-MM-YYYY 格式而不是 MM-DD-YYYY。该功能记录在案 here.
你问了,'How can I tell the code that the format is dd.mm.yyyy?'
因为你已经导入了 dateutil
那么大多数 直接 答案可能是指定日期字符串的格式,但这是非常丑陋的代码:
>>> dateutil.parser.datetime.datetime.strptime(date_string, '%d.%m.%Y')
datetime.datetime(2015, 1, 5, 0, 0)
我们可以看到代码中嵌入了一个明显的替代方案。你可以直接使用它。
>>> from datetime import datetime
>>> datetime.strptime(date_string, '%d.%m.%Y')
datetime.datetime(2015, 1, 5, 0, 0)
还有一些较新的替代库提供了大量的方法和属性。
在这种情况下最简单的使用方法是 arrow
:
>>> import arrow
>>> arrow.get(date_string, 'DD.MM.YYYY')
<Arrow [2015-01-05T00:00:00+00:00]>
虽然我发现 arrow easier to remember, pendulum 的格式使用 Python 的旧格式系统,这可能会让您不必学习箭头的格式。
>>> import pendulum
>>> pendulum.datetime.strptime(date_string, '%d.%m.%Y')
<Pendulum [2015-01-05T00:00:00+00:00]>