簡體   English   中英

使用date()從SQL數據庫在PHP中格式化年份?

[英]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_*函數 它們不再維護,已正式棄用 看到紅色框了嗎? 而是了解准備好的語句 ,並使用PDOMySQLi- 本文將幫助您確定哪一個。 如果您選擇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_ * 擴展名。 請嘗試使用PDO

使用MySQL Date_Format函數而不是PHP ,格式為'%b%e,%Y'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM