我在MySQL中有一个日期时间列。
如何将其转换为显示为mm/dd/yy H:M (AM/PM)使用PHP?
我在MySQL中有一个日期时间列。
如何将其转换为显示为mm/dd/yy H:M (AM/PM)使用PHP?
当前回答
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)函数以获得更多的日期格式。
其他回答
如果您正在使用PHP 5,也可以尝试一下
$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
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)函数以获得更多的日期格式。
如果您正在寻找一种将日期规范化为MySQL格式的方法,请使用以下方法
$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime($mysqldate)行接受一个字符串,并执行一系列启发式操作将该字符串转换为unix时间戳。
$mysqldate = date('Y-m-d H:i:s', $phpdate)使用该时间戳和PHP的日期函数将该时间戳转换回MySQL的标准日期格式。
(编者注:这个答案在这里是因为一个原始的问题,措辞令人困惑,这个答案提供了一般谷歌有用性,即使它没有直接回答现在存在的问题)
您还可以让您的查询以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中的外观,这很烦人。
我建议的方法如下。首先,从一个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——希望是你所期望的。
这个例子使用了蛋白库。如果你喜欢,你可以再看一些。