我已将存储在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日上传。'。
有什么想法吗?我尝试过很多东西,但我似乎无法正确显示这个日期。
答案 0 :(得分:4)
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - 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>';
答案 2 :(得分:0)
使用MySQL Date_Format功能代替PHP,格式为'%b%e,%Y'