[英]Formatting year in PHP from SQL database using date()?
我已將存儲在MySQL數據庫中的圖像的上傳日期作為類型“ datetime”上傳。
例如2013-04-16 00:20:00
但是,無論我做什么,我似乎都無法獲得在PHP代碼中正確回顯的日期。 這是我目前擁有的:
$session_query = mysql_query($sql);
$upload_date_formatted = date('M jS, Y', $session_query['upload_date']);
echo '<h6> Uploaded on '.$upload_date_formatted.' .</h6>';
使用上面的示例,它總是給出:“ 1970年1月1日上載。”。
有任何想法嗎? 我已經嘗試了很多事情,但是似乎無法正確顯示該日期。
請不要在新代碼中使用mysql_*
函數 。 它們不再維護,已正式棄用 。 看到紅色框了嗎? 而是了解准備好的語句 ,並使用PDO或MySQLi- 本文將幫助您確定哪一個。 如果您選擇PDO, 這是一個很好的教程 。
您需要在$session_query
上調用mysql_fetch_assoc()
將其轉換為可用數組。
您還需要通過strtotime()
傳遞$session_query['upload_date']
以將其轉換為date()
期望的整數。
$session_query = mysql_query($sql);
$row = mysql_fetch_assoc($session_query);
$upload_date_formatted = date('M jS, Y', strtotime($row['upload_date']));
echo '<h6> Uploaded on '.$upload_date_formatted.' .</h6>';
因為它正試圖從非數組傳遞數組鍵,所以它將為null
,當它由date()
轉換為整數時,它將為零,從而導致您看到的日期為01/01/1970。 這還會引發一些錯誤-您應該打開錯誤報告,因為它將幫助您更快地在開發環境中查找錯誤:
error_reporting(-1);
ini_set('display_errors', 1);
另外,您可以使用DateTime
對象和createFromFormat()
方法:
$session_query = mysql_query($sql);
$row = mysql_fetch_assoc($session_query);
$date = DateTime::createFromFormat('Y-m-d H:i:s', $row['upload_date']);
$upload_date_formatted = $date->format('M jS, Y');
您需要首先使用strtotime()
將其轉換為Unix時間戳,然后可以使用date()
對其進行格式化。
$session_query = mysql_query($sql);
$upload_date_formatted = date( 'M jS, Y', strtotime( $session_query['upload_date'] ) );
echo '<h6> Uploaded on '.$upload_date_formatted.' .</h6>';
使用MySQL Date_Format函數而不是PHP ,格式為'%b%e,%Y'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.