0

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

例如 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>';

使用上面的例子,这总是给出:'Uploaded on Jan 1st, 1970.'。

有任何想法吗?我已经尝试了很多东西,但我似乎无法让这个日期正确显示。

4

3 回答 3

4

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程


您需要调用mysql_fetch_assoc()$session_query将其转换为可用数组。

您还需要$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');
于 2013-04-15T23:29:45.793 回答
0

您需要先将其转换为 Unix 时间戳strtotime(),然后您可以使用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

于 2013-04-15T23:29:10.120 回答
0

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

于 2013-04-15T23:30:34.330 回答