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

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


当前回答

要在PHP中正确格式化DateTime对象以存储在MySQL中,请使用MySQL使用的标准化格式,即ISO 8601。

PHP从5.1.1版本开始就将这种格式存储为常量,我强烈建议使用这种格式,而不是每次都手动输入字符串。

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

这个和其他PHP DateTime常量的列表可以在http://php.net/manual/en/class.datetime.php#datetime.constants.types上找到

其他回答

更简单的方法是直接在MySQL查询中格式化日期,而不是PHP。请参阅MySQL手册中的DATE_FORMAT条目。

如果更愿意在PHP中完成,则需要date函数,但必须首先将数据库值转换为时间戳。

你可能会遇到Unix时间戳中没有返回的日期的问题,所以这对我来说是可行的…

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

如果您不想更改PHP代码中的每个函数,以显示预期的日期格式,请在源代码—您的数据库中更改它。

重要的是要像上面的例子一样,用as操作符来命名行(如dateFrom, dateUntil)。你在这里写的名字,这些行会在结果中被调用。

此示例的输出将是

[每月的第一天,数字(0..31)]。[月份名称(一月至十二月)]。[年份,数字,四位数]

例如:5. august.2015

使用分隔符更改圆点,并检查DATE_FORMAT(date,format)函数以获得更多的日期格式。

忘记所有。只使用:

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

要在PHP中正确格式化DateTime对象以存储在MySQL中,请使用MySQL使用的标准化格式,即ISO 8601。

PHP从5.1.1版本开始就将这种格式存储为常量,我强烈建议使用这种格式,而不是每次都手动输入字符串。

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

这个和其他PHP DateTime常量的列表可以在http://php.net/manual/en/class.datetime.php#datetime.constants.types上找到