我在MySQL中有一个 datetime 列 .
datetime
如何使用PHP将其转换为显示为 mm/dd/yy H:M (AM/PM) ?
如果您正在寻找将日期规范化为MySQL格式的方法,请使用以下方法
$phpdate = strtotime( $mysqldate ); $mysqldate = date( 'Y-m-d H:i:s', $phpdate );
行 $phpdate = strtotime( $mysqldate ) 接受一个字符串并执行一系列启发式操作以将该字符串转换为unix时间戳 .
$phpdate = strtotime( $mysqldate )
$mysqldate = date( 'Y-m-d H:i:s', $phpdate ) 行使用该时间戳和PHP的date函数将该时间戳恢复为MySQL的标准日期格式 .
$mysqldate = date( 'Y-m-d H:i:s', $phpdate )
( Editor Note :这个答案在这里是因为一个原始问题,令人困惑的措辞,以及这个答案所提供的一般Google有用性,即使它没有'直接回答现在存在的问题)
如果您使用的是PHP 5,也可以尝试
$oDate = new DateTime($row->createdate); $sDate = $oDate->format("Y-m-d H:i:s");
要正确格式化PHP中的 DateTime 对象以便在MySQL中存储,请使用MySQL使用的标准化格式,即ISO 8601 .
DateTime
从版本5.1.1开始,PHP已将此格式存储为常量,我强烈建议您使用它,而不是每次都手动键入字符串 .
$dtNow = new DateTime(); $mysqlDateTime = $dtNow->format(DateTime::ISO8601);
这个以及其他PHP DateTime常量的列表可在http://php.net/manual/en/class.datetime.php#datetime.constants.types获得 .
要将从MySQL检索的日期转换为请求的格式( mm/dd/yy H:M (AM/PM) ):
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 date formatting options调整格式 .
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月)] . [年份,数字,4位数]
示例:5 . 2015年8月
使用选择的分隔符更改点,并检查DATE_FORMAT(date,format)函数以获取更多日期格式 .
一种更简单的方法是直接在MySQL查询中格式化日期,而不是PHP . 见MySQL manual entry for DATE_FORMAT .
如果你宁愿用PHP做,那么你需要date函数,但是你必须先将数据库值转换为时间戳 .
使用PHP 4.4.9版和MySQL 5.0,这对我有用:
$oDate = strtotime($row['PubDate']); $sDate = date("m/d/y",$oDate); echo $sDate
PubDate 是MySQL中的列 .
PubDate
使用date函数:
<?php echo date("m/d/y g:i (A)", $DB_Date_Field); ?>
这应格式化SQL查询中的字段:
SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
忘记所有 . 只需使用:
$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
取决于您的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)); }
这将有效......
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
$valid_date = date( 'm/d/y g:i A', strtotime($date));
Reference: http://php.net/manual/en/function.date.php
您可能遇到Unix时间戳中未返回日期的问题,因此这对我有用...
return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
您还可以将查询作为Unix时间戳返回 . 这样就不需要调用 strtotime() 并在PHP方面减少密集程度......
strtotime()
select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
然后在PHP中使用 date() 函数以您想要的方式格式化它 .
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中的格式 .
DATE_FORMAT
有两个不同的查询只是为了改变日期在UI中的显示方式,这很烦人 .
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
最后是PHP 5.3及以上版本的正确解决方案:
$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date); echo $date->format('m/d/y h:i a');
17 回答
如果您正在寻找将日期规范化为MySQL格式的方法,请使用以下方法
行
$phpdate = strtotime( $mysqldate )
接受一个字符串并执行一系列启发式操作以将该字符串转换为unix时间戳 .$mysqldate = date( 'Y-m-d H:i:s', $phpdate )
行使用该时间戳和PHP的date函数将该时间戳恢复为MySQL的标准日期格式 .( Editor Note :这个答案在这里是因为一个原始问题,令人困惑的措辞,以及这个答案所提供的一般Google有用性,即使它没有'直接回答现在存在的问题)
如果您使用的是PHP 5,也可以尝试
要正确格式化PHP中的
DateTime
对象以便在MySQL中存储,请使用MySQL使用的标准化格式,即ISO 8601 .从版本5.1.1开始,PHP已将此格式存储为常量,我强烈建议您使用它,而不是每次都手动键入字符串 .
这个以及其他PHP DateTime常量的列表可在http://php.net/manual/en/class.datetime.php#datetime.constants.types获得 .
要将从MySQL检索的日期转换为请求的格式(
mm/dd/yy H:M (AM/PM)
):请参阅PHP date formatting options调整格式 .
如果您不想更改PHP代码中的每个函数,要显示预期的日期格式,请在源代码中更改它 - 您的数据库 .
使用 as 运算符命名行非常重要,如上例所示(作为dateFrom,作为dateUntil) . 您在那里写的名称是名称,行将在您的结果中调用 .
这个例子的输出将是
[月份的日期,数字(0..31)] . [月份名称(1月〜12月)] . [年份,数字,4位数]
示例:5 . 2015年8月
使用选择的分隔符更改点,并检查DATE_FORMAT(date,format)函数以获取更多日期格式 .
一种更简单的方法是直接在MySQL查询中格式化日期,而不是PHP . 见MySQL manual entry for DATE_FORMAT .
如果你宁愿用PHP做,那么你需要date函数,但是你必须先将数据库值转换为时间戳 .
使用PHP 4.4.9版和MySQL 5.0,这对我有用:
PubDate
是MySQL中的列 .使用date函数:
这应格式化SQL查询中的字段:
忘记所有 . 只需使用:
取决于您的MySQL日期时间配置 . 通常: 2011-12-31 07:55:13 格式 . 这个非常简单的功能应该具有魔力:
或者更进一步以匹配问题 .
这将有效......
Reference: http://php.net/manual/en/function.date.php
您可能遇到Unix时间戳中未返回日期的问题,因此这对我有用...
您还可以将查询作为Unix时间戳返回 . 这样就不需要调用
strtotime()
并在PHP方面减少密集程度......然后在PHP中使用
date()
函数以您想要的方式格式化它 .要么
我喜欢这种方法而不是使用MySQL的
DATE_FORMAT
函数,因为它允许您重用相同的查询来获取数据,并允许您更改PHP中的格式 .有两个不同的查询只是为了改变日期在UI中的显示方式,这很烦人 .
最后是PHP 5.3及以上版本的正确解决方案: