我在MySQL中有一个日期时间列。

如何将其转换为显示为mm/dd/yy H:M (AM/PM)使用PHP?


当前回答

如果您正在使用PHP 5,也可以尝试一下

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");

其他回答

如果您正在使用PHP 5,也可以尝试一下

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");

最后是PHP 5.3及以上版本的正确解决方案: (像评论中提到的那样,在示例中添加了可选的时区)

无时区:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');

时区:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date, new \DateTimeZone('UTC'));
$date->setTimezone(new \DateTimeZone('Europe/Berlin'));
echo $date->format('m/d/y h:i a');

您还可以让您的查询以Unix时间戳的形式返回时间。这将消除调用strtotime()的需要,并使PHP方面的工作不那么密集……

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

然后在PHP中,只需使用date()函数以任何您喜欢的方式格式化它。

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

or

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

我喜欢这种方法,而不是使用MySQL的DATE_FORMAT函数,因为它允许您重用相同的查询来获取数据,并允许您更改PHP中的格式。

有两个不同的查询只是为了改变日期在UI中的外观,这很烦人。

这会有用的……

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));

忘记所有。只使用:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))