PHP のstrtotime()
関数は、任意の文字列を取得し、それがどのような日付形式であるかを判断するために、すでに最善を尽くしています。
私はいくつかの理由でこの関数を嫌いますが、未知の日付形式の文字列を入力として与えられた場合、合理的な処理を行います。
ただし、strtotime()
任意の日付形式はあいまいであるため、 の最善の努力でさえ十分ではありません。
05-06-07
2007 年 6 月 5 日なのか 2007 年 5 月 6 日なのかを判断する方法はありません。あるいは 2005 年 6 月 7 日でさえあります (はい、そのように日付を書く人もいます)。
単純明快な真実: それは不可能です。
意味のある方法で日付を信頼できるものにしたい場合は、任意の入力形式を受け入れることができるという考えを放棄する必要があります。
[編集] コメントで、入力はさまざまな Excel および CSV ファイルから来ていると言っています。
唯一の希望は、これらの各ファイル自体が一貫している場合です。特定のソースからのファイルが特定の入力形式を持つことがわかっている場合は、インポートするファイルの種類ごとにカスタム ラッパーを作成し、その形式用に処理できます。これは私が過去に使用したソリューションであり、処理しているファイルの形式を予測できる限り機能します。
ただし、個々のファイルに予測できない日付やあいまいな日付が含まれている場合は、運が悪く、不可能なタスクを抱えています。不良データを回避する唯一の方法は、ファイルのサプライヤーにキックバックして、データを修正するよう依頼することです。