2012-06-08 80 views
5

我想在European format (dd/mm/yyyy)中顯示日期strtotime,但它總是返回01/01/1970。PHP:strtotime()總是返回01/01/1970

這裏是我的代碼行:

echo "<p><h6>".date('d/m/Y', strtotime($row['DMT_DATE_DOCUMENT']))."</h6></p>"; 

在我的數據庫,該領域是一個varchar和記錄格式化像爲yyyy.mm.dd

我使用相同的代碼行的另一個字段形成像yyyy-mm-dd(varchar太),它工作正常。

感謝您的幫助。

+0

這可能是因爲的strtotime假定爲mm/dd/yyyy的替代,如果你輸入喜歡的日期13/2/2012抱怨沒有第13個月,給你時間0(1/1/1970) –

回答

4

由於格式yyyy-mm-dd作品,嘗試用-更換.

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT']))); 
3

與嘗試:

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
$time = mktime($date['hour'], $date['minute'], $date['second'], $date['month'], $date['day'], $date['year']); 
echo "<p><h6>".date('d/m/Y', $time)."</h6></p>"; 

(使用date_parse_from_format()而不是strtotime()

或者只是:

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
echo "<p><h6>{$date['day']}/{$date['month']}/{$date['year']}</h6></p>"; 
+1

是的,只有'date'不接受'date_parse_from_format'的直接輸出。 – deceze

+0

你說得對..很抱歉,我現在要糾正。 – fquffio

2

the strtotime page in the PHP manual引用。在第m

日期/ d/y或d-M-Y格式通過查看在各個組件之間的分離器消除歧義:如果分離器是斜線(/),則美國米/ d假定/ Y;而如果分隔符是破折號( - )或點(。),則假定歐洲的d-m-y格式。

爲了避免潛在的不確定性,這是最好的時候使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()

所以在你的情況下,它應該是格式YYYY-MM-DD或d.m.y.

如果要分析你的自定義格式然後使用date_create_from_format

例如,

date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT'])