2011-04-13 45 views
0

我從MySQL檢索datetime數據檢索的數據從一個單行。PHP日期時間不能正常工作

2011-04-11 19:31:30 

我想重新設置日期時間在d-m-Y H:i:s對我使用date_format()下面的代碼工作得很好。

$date = new DateTime($users['registerDate']); 
echo $date->format('d-m-Y H:i:s'); 

不過,我不想去面向對象的方式只是爲了重新格式化,因爲我將使用foreach循環內的代碼,這意味着我將不得不一次又一次地初始化DateTime類。

我試着用下面這段代碼做程序的方式。

$date = $users['registerDate']; 
echo date_format($date, 'Y-m-d H:i:s'); 

上面的代碼不適合我,並給出以下錯誤。

警告:DATE_FORMAT()預計參數1到上線在給定/Applications/MAMP/htdocs/kokaris/administrator/resources/library/models/users/users.php日期時間,串21

什麼可能是錯誤的?

給出的解決方案適用於程序的方式完美的罰款。

echo date('m-d-Y',strtotime($users['registerDate'])); 

不過,我想知道,這將是最好的可行的解決方案上面的程序方式或面向對象的方式。

$date = new DateTime($users['registerDate']); 
echo $date->format('d-m-Y H:i:s'); 

考慮到我將使用foreach循環內的代碼,它可能會循環超過一百次。

+1

的第一個參數'DATE_FORMAT()'必須DateTime'的'一個實例。你正在向它傳遞一個字符串 – Phil 2011-04-13 05:39:40

+0

在PHP中,實例化一個對象並不是一個非常昂貴的操作,至少與你一直都在做的其他事情沒有什麼不同。純粹出於性能考慮而選擇面向對象的程序代碼在諸如PHP之類的語言中很愚蠢。 – tdammers 2011-04-13 05:58:58

+0

@tdammers你確定在給定的條件下使用OOP方式可以嗎?例如,如果我必須檢索100條記錄,考慮到它將初始化類100次,對於這樣的條件,僅僅使用過程函數()是不好的? – 2011-04-13 06:06:41

回答

7

你不需要 「DATE_FORMAT()」:

echo date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30')); 

//results: 11-04-2011 19:31:30 
4

您正在嘗試使用一個功能/對象,而無需創建於DateTime類參考DateTime類的一部分。

對於程序格式化看看date()

2

你所尋求的是:

date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30')); 

有一個看看php手冊。但是,使用你自己提出的方法是相當優良的,因爲日期時間對象映射到用C編寫的

一些功能

而且PHP日期時間正常工作,因爲DATE_FORMAT只是日期::格式的別名,這正是需要你不希望傳遞(一個DateTime對象)是什麼。

老實說,我們正在談論的PHP ...