2013-04-15 21 views
0

我有上传图像存储在MySQL数据库的日期类型'datetime'。使用date()从SQL数据库格式化PHP年?

例如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日。'。

任何想法?我尝试了很多东西,但我似乎无法得到正确显示的日期。

回答

4

Please, don't use mysql_* functions in new code。他们不再保留and are officially deprecated。请参阅red box?请改为了解prepared statements,并使用PDOMySQLi - this article将帮助您决定哪个。如果您选择PDO,here is a good tutorial


你需要调用$session_querymysql_fetch_assoc()将其转换为可用的阵列。

您还需要通过$session_query['upload_date']strtotime()将其转换为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'); 
0

您需要先使用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