次のような日付のリストがあります。
['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 を超える数は明らかに 1 か月ではなく 1 日です。ユーザーがヨーロッパ出身であることがわかっている場合、日付はおそらく DD-MM-YYYY になります。米国の人は、MM-DD-YYYY を使用する可能性が高くなります。