PHP の strtotime() メソッドを使用して、フォームの日付フィールドを受け入れています。「明日」、「次の木曜日」、または (おそらく) 任意の日付表現を受け入れて、Unix タイムスタンプに変換する方法で、その強力さが気に入っています。
それはうまく機能しています - 昨日まで。誰かが「2-4-10」と入力すると、2010 年 2 月 4 日ではなく、2002 年 4 月 10 日と記録されました。そのため、MDY ではなく YMD が必要でした。
2 桁の年を使用しているだけに問題があるのではないかと思い、「2-4-2010」で再試行しました。これは 2010 年 4 月 2 日の記録です。その時点で、 strtotime() が何をしているのか理解できません。PHP.net は、米国英語の日付形式を想定していると述べています。では、なぜ DMY を想定するのでしょうか。
これを回避する方法はありますか?それとも strtotime() の使用をやめる必要がありますか?
注:私はちょうど今テストをしました。ハイフン/ダッシュの代わりにスラッシュを使用すると、2/4/10 でも問題なく動作します。なぜそれが問題なのですか?それだけなら、フォーム入力を strtotime() に渡す前に str_replace("-", "/", $input) を実行するだけでよいでしょうか?