strtotime("25/03/1957")
falseを返します。これらの日付形式のすべてを満たすものは何ですか?実際に自分で作るのにどれくらいの時間がかかるか想像できないので、あなたが知っているものがすでにそこにあることを願っています。
ありがとう!
一部の日付は有効ですが、2つの異なる実際の日付を指す可能性があることを考慮すると、関数が常に正しい形式を「推測」することはできません...
これを支援するために、PHP> = 5.3では、新しい関数が追加されました:date_create_from_format
-しかし、残念ながら、PHP <5.3では存在しません...
(も参照DateTime::createFromFormat
)
それでも、あなたが取った例では、1957年が問題の原因となる可能性があります。日付に関しては、PHPは一般的にUNIXタイムスタンプで動作します...
また、少なくとも32ビットシステムでは、1970年1月1日からの秒数をカウントするため、1970年から2038年までの日付しか表すことができません。
この問題を回避するには、DateTime
クラスを使用することをお勧めします。これを使用して(quoting):
日付と時刻の情報は64ビットの数値として内部に格納されるため、考えられるすべての日付(負の年を含む)がサポートされます。範囲は過去約2,920億年から将来も同じです。
(PHP <5.3の解析の問題は解決しませんが、日付範囲の問題は解決します...)
dateTimeオブジェクトはstrtotime()関数よりも幅広い形式をサポートしており、サーバーのタイムゾーン設定も違いを生むことがわかりました。しかし、string to dateメソッドを使用する前に、「/」を「-」に置き換える関数を作成することになりました。また、有効かどうかをテストし、無効な場合は見かけのddとmm(25-03-2001 => 03-25-2001)を交換してから、再度テストします。