2011-12-19 69 views
0

我在我的MySQL數據庫中有日期字段,在我的PHP表單中有三個字段(yyyy-mm-dd)。 用戶可以設置一個完整的日期,但也可以設置「yyyy-mm」或「yyyy」日期。 在MySQL中一切正常,如果用戶只設置年份,它會存儲「yyyy-00-00」。因爲一個月沒有00天,一年沒有00個月,所以它的行爲就像是一個「NULL」日或月。允許在PHP日期忽略幾天或幾個月

但是,當我想顯示日期返回給用戶時,使用date_format PHP函數,如果日期是「2012-00-00」,則顯示「2011-12-30」。

我該如何輕鬆(不使用db中的have_day和have_month列)處理此行爲?

在此先感謝!

+2

你想顯示給用戶什麼? – dm03514 2011-12-19 21:01:41

+0

完整日期如果完整,則僅在日期類似於「yyyy-00-00」且年份與日期類似「yyyy-mm-00」時纔是一年。 – 2011-12-19 21:30:55

回答

2

你的情況是不尋常的。您不能使用DATE類格式化日期。嘗試將日期作爲字符串處理。

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

好主意! 你對這樣的事情有什麼看法? switch(strpos($ date,'00')){ catch 0: // error break; 案例5: //只有年份 break; 案例8: //只有年和月 break; 默認值: //完成日期 break; } – 2011-12-19 21:29:12

+0

我必須這樣說,如果您必須實施類似您的評論的解決方案,那麼可以通過改變方法來尋找更好的解決方案。你所做的事情並不自然,在大多數情況下,重新考慮代碼是一個好主意。 – Stewie 2011-12-20 14:35:54

+0

爲什麼這是一個糟糕的解決方案,以及如何以另一種方式做到這一點? – 2011-12-20 15:04:25

相關問題