我datetime
在MySQL中有专栏。
如何使用PHP 将其转换为mm / dd / yy H:M(AM / PM)显示?
OOP
datetime函数,它们非常易于使用。
mm/dd/yy
他是非常美国人,居住在世界其他地区的我们这些人对试图猜测的含义有些恼怒11-12-13
。更为通用的标准是yyyy-mm-dd
,并且是ISO 8601标准的一部分。否则,您应该使用月份名称,而不是数字。
我datetime
在MySQL中有专栏。
如何使用PHP 将其转换为mm / dd / yy H:M(AM / PM)显示?
OOP
datetime函数,它们非常易于使用。
mm/dd/yy
他是非常美国人,居住在世界其他地区的我们这些人对试图猜测的含义有些恼怒11-12-13
。更为通用的标准是yyyy-mm-dd
,并且是ISO 8601标准的一部分。否则,您应该使用月份名称,而不是数字。
Answers:
如果您正在寻找一种将日期标准化为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 date
函数将其转换回MySQL的标准日期格式。
(编者注:之所以在这里给出此答案,是因为最初的问题带有令人困惑的措辞,而且即使该答案没有直接回答现在存在的问题,该答案也具有一般的Google实用性)
does not work
为了谁?如果您想按照OP的要求从 MySQL转换为mm / dd / yy H:M(AM / PM),则可接受的答案将起作用。仅仅因为您想做相反的事情就不会使接受的答案错误。
要将从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日期格式选项以调整格式。
$row
物体应该从哪里来?
$valid_date = date( 'm/d/y g:i A', strtotime($date));
对于PHP 5.3和更高版本,最后是正确的解决方案:( 在示例中添加了可选的时区,如注释中所述)
$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date, new \DateTimeZone('UTC'));
$date->setTimezone(new \DateTimeZone('Europe/Berlin')); // optional
echo $date->format('m/d/y h:i a');
\DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
datetime
列应为UTF8,因此请new DateTimeZone('UTC')
作为第3个参数传递以确保PHP知道。
一种更简单的方法是直接在MySQL查询中而不是PHP格式化日期。参见MySQL手册中的DATE_FORMAT。
如果您希望使用PHP进行操作,则需要使用date函数,但是必须首先将数据库值转换为时间戳。
date
函数时,您也应该写strottime
函数来帮助别人,而不是“但是您必须先将数据库值转换成时间戳”。
要DateTime
在PHP中正确格式化对象以存储在MySQL中,请使用MySQL使用的标准格式,即ISO 8601。
从5.1.1版开始,PHP就将此格式存储为常量,因此我强烈建议使用它,而不是每次都手动键入字符串。
$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);
可在http://php.net/manual/en/class.datetime.php#datetime.constants.types上找到该列表以及其他PHP DateTime常量列表。
取决于您的MySQL日期时间配置。通常:2011-12-31 07:55:13格式。这个非常简单的功能应该具有神奇的作用:
function datetime()
{
return date( 'Y-m-d H:i:s', time());
}
echo datetime(); // display example: 2011-12-31 07:55:13
还是要提前解决这个问题。
function datetime($date_string = false)
{
if (!$date_string)
{
$date_string = time();
}
return date("Y-m-d H:i:s", strtotime($date_string));
}
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)]。[月份名称(1月。12月)]。[年份,数字,四位数]
示例:2015年8月5日
用选择的分隔符更改点,然后检查DATE_FORMAT(date,format)函数是否有更多日期格式。
您还可以让查询以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中的显示方式而令人讨厌。
UNIX_TIMESTAMP
用来消除对的需要的想法strtotime
。如果给出一个以实际要求的OP格式格式化时间的示例,则此答案会更好。
这将起作用...
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
我建议的方法如下所示。首先,您使用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
-希望您期望什么。
本示例使用蛋白酥皮库。如果您愿意,可以查看更多内容。