使用PHP从MySQL日期时间转换为另一种格式

时间:2020-03-06 14:45:22  来源:igfitidea点击:

我在MySQL中有一个" datetime"列。

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

解决方案

一种更简单的方法是直接在MySQL查询中而不是PHP格式化日期。有关DATE_FORMAT的信息,请参见MySQL手册。

如果要使用PHP进行操作,则需要使用date函数,但是必须首先将数据库值转换为时间戳。

使用日期功能:

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>

要将从MySQL检索到的日期转换为请求的格式(mm / dd / yy H:M(AM / PM)):

// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

请参考PHP日期格式选项以调整格式。

我们还可以让查询以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);
?>

或者

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

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

有两个不同的查询只是为了更改日期在UI中的显示方式,这很烦人。

如果我们使用的是PHP 5,也可以尝试

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

使用PHP版本4.4.9和MySQL 5.0,这对我有用:

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

" PubDate"是MySQL中的列。

我们可能会遇到Unix Timestamp中未返回日期的问题,因此这对我有用...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))