2011-12-19 3 views
0

MySQLデータベースに日付フィールドがあり、PHPフォームに3つのフィールド(yyyy-mm-dd)があります。 ユーザーは完全な日付を設定しますが、「yyyy-mm」または「yyyy」の日付を設定することもできます。 MySQLではすべてがうまくいきます。ユーザーが年だけ設定した場合は、 "yyyy-00-00"が格納されます。したがって、ある月の00日と1年の00の月がないので、それは "NULL"の日または月のように動作します。PHPの日付で日または月を無視できるようにする

しかし、date_format PHP関数を使用して、日付を「2012-00-00」にすると、「2011-12-30」と表示されます。

この動作はどのようにして簡単に(have_dayとhave_monthカラムをデータベースに使用しないで)行うことができますか?

ありがとうございます!

+2

あなたはユーザーに何を表示しますか? – dm03514

+0

完全な日付は、日付が「yyyy-00-00」の場合にのみ、年が「yyyy-mm-00」の場合は年と月になります。 –

答えて

2

あなたのケースは珍しいです。 DATEクラスを使用して日付を書式設定することはできません。日付をリテラル文字列として扱います。

if (strstr($date_returned,'-00-00')) 
{ 
    echo str_replace('-00-00','',$date_returned).'-00-00'; 
} 
+0

素晴らしいアイデア! このようなことはどう思いますか? スイッチ(strpos($ date、 '00')){ catch 0: //エラー break; ケース5: //年のみ 休憩; ケース8: //年月のみ 休憩; デフォルト: //完全な日付 休憩; } –

+0

あなたのコメントのような解決策を実装する必要がある場合は、より良い解決策を見つけるためにアプローチを変更する必要があります。あなたがやっていることは自然ではなく、ほとんどの場合、コードを再考するのは良い考えです。 – Stewie

+0

なぜそれは悪い解決策ですか、別の方法でそれを行う方法ですか? –

関連する問題