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

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


当前回答

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

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

其他回答

我建议的方法如下。首先,从一个mysql格式的字符串创建一个基本的datetime对象;然后按你喜欢的方式格式化。幸运的是,mysql datetime是符合iso8601标准的,所以代码本身看起来非常简单和优雅。但是请记住,datetime列没有时区信息,因此需要适当地转换它。

代码如下:

(new ISO8601Formatted(
    new FromISO8601('2038-01-19 11:14:07'),
    'm/d/Y h:iA'
))
    ->value();

它输出01/19/2038 11:14AM——希望是你所期望的。

这个例子使用了蛋白库。如果你喜欢,你可以再看一些。

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('-', '/', $_POST['date'])))."'";
$valid_date = date( 'm/d/y g:i A', strtotime($date));

参考:http://php.net/manual/en/function.date.php

直接输出,如德文格式:

  echo(date('d.m.Y H:i:s', strtotime($row["date_added"])));