我有一个日期列表,例如:
['2013-04-06', '06/04/2013', '04/06/2013', 'Apr 06 2013']
我曾经用于datetime.strftime()
转换日期('%d/%m/%Y')
,但是当它转换相同的日期时使用不同的格式,例如:
dd/mm/yyyy and mm/dd/yyyy
'06/04/2013' and '04/06/2013'
它按原样返回日期......我该
如何解决我的问题?
你不能,至少不能 100% 可靠。如果您的日期格式如此混杂,您将永远无法判断04/06/2013
应该是 4 月 6 日还是 6 月 4 日。
您唯一的机会是采用更常见的变体并首先尝试。如果这引发错误或返回不可信的日期(如未来的日期,如果不允许),请尝试下一个日期。
您可能还想查看dateutil。它尽最大努力以任何给定格式解析日期。
数字日期可能不明确。有几个解决方案;
如果您从用户输入中获取日期,则在所有情况下都无法区分 MM-DD 和 DD-MM。但是有些事情可以提供帮助。>12 的数字显然是一天,而不是一个月。如果您知道用户来自欧洲,则日期可能是 DD-MM-YYYY。来自美国的人更有可能使用 MM-DD-YYYY。