0

我有一个日期列表,例如:

['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'

它按原样返回日期......我该
如何解决我的问题?

4

2 回答 2

2

你不能,至少不能 100% 可靠。如果您的日期格式如此混杂,您将永远无法判断04/06/2013应该是 4 月 6 日还是 6 月 4 日。

您唯一的机会是采用更常见的变体并首先尝试。如果这引发错误或返回不可信的日期(如未来的日期,如果不允许),请尝试下一个日期。

您可能还想查看dateutil。它尽最大努力以任何给定格式解析日期。

于 2013-04-06T11:54:20.760 回答
0

数字日期可能不明确。有几个解决方案;

  • 使用缩写的月份名称;“2013 年 4 月 6 日”或“2013 年 4 月 6 日”。缺点是月份的缩写取决于语言环境。
  • 坚持国际标准ISO 8601;YYYY-MM-DD 或 YYYYMMDD。

如果您从用户输入中获取日期,则在所有情况下都无法区分 MM-DD 和 DD-MM。但是有些事情可以提供帮助。>12 的数字显然是一天,而不是一个月。如果您知道用户来自欧洲,则日期可能是 DD-MM-YYYY。来自美国的人更有可能使用 MM-DD-YYYY。

于 2013-04-06T12:02:56.127 回答