将日期格式化为所需格式会在python中返回无效日期。怎么控制呢?

时间:2013-04-06 11:48:01

标签: python datetime strftime

我有一个日期列表,如:

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

它返回日期......
我怎样才能解决我的问题?

2 个答案:

答案 0 :(得分:2)

你不能,至少没有100%的可靠性。如果您的日期格式无可救药地混合在一起,您将永远无法判断04/06/2013应该是4月6日还是6月4日。

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

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

答案 1 :(得分:0)

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

  • 使用月份的缩写名称; “2013年6月6日”或“2013年6月6日”。缺点是该月份的缩写与区域设置有关。
  • 坚持国际标准ISO 8601; YYYY-MM-DD或YYYYMMDD。

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