使用date()从SQL数据库格式化PHP中的年份?

时间:2013-04-15 23:27:02

标签: php mysql date datetime

我已将存储在MySQL数据库中的图像的日期上传为“datetime”类型。

e.g。 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日上传。'。

有什么想法吗?我尝试过很多东西,但我似乎无法正确显示这个日期。

3 个答案:

答案 0 :(得分: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_query上致电mysql_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');

答案 1 :(得分: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

答案 2 :(得分:0)

使用MySQL Date_Format功能代替PHP,格式为'%b%e,%Y'