今日、StackOverflow でこの質問に遭遇しましたが、回答がありませんでした。
私の質問は
echo date('Y-m-d',strtotime('2012-september-09')); // output - 2012-09-01
echo date('Y-m-d',strtotime('09-september-2012')); // output - 2012-09-09
最初の形式で正しい答えが得られない理由がわかりません。ヘルプはありますか?
マニュアルから:
区切り文字がスラッシュ (/) の場合、アメリカの m/d/y が想定されます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。
これはdate
関数の動作ではなく、 の動作ですstrtotime
。Date Formatsマニュアルページstrtotime
にリストされている特定の形式の日付のみを処理できます。そこにリストされている形式ですが、サポートされている形式のいずれとも一致しません。09-september-2012
dd ([ \t.-])* m ([ \t.-])* y
2012-september-09
あなたのコードでは、
echo date('Y-m-d',strtotime('2012-september-09'));
strtotime('2012-september-09')
は日付関数の有効な形式('2012-september-09')ではありません。strtotime()
このリンクを参照してくださいhttp://www.php.net/manual/en/datetime.formats.date.php