使用PHP将MySQLdate时间转换为另一种格式
我在MySQL中有一个datetime
列。
如何将它转换为显示为mm / dd / yy H:M(AM / PM)使用PHP?
如果您正在寻找将date规格化为MySQL格式的方法,请使用以下内容
$phpdate = strtotime( $mysqldate ); $mysqldate = date( 'Ymd H:i:s', $phpdate );
$phpdate = strtotime( $mysqldate )
接受一个string,并执行一系列的启发式把这个string变成一个unix时间戳。
行$mysqldate = date( 'Ymd H:i:s', $phpdate )
使用该时间戳和PHP的date
函数将该时间戳恢复为MySQL的标准date格式。
( 编者注 :这个答案在这里是因为一个原来的问题,混淆的措辞,一般谷歌有用这个答案,即使它没有直接回答现在存在的问题)
将从MySQL检索的date转换为请求的格式( mm/dd/yy H:M (AM/PM)
):
// $datetime is something like: 2014-01-31 13:05:59 $time = strtotime($datetimeFromMysql); $myFormatForView = date("m/d/yg:i A", $time); // $myFormatForView is something like: 01/31/14 1:05 PM
请参阅PHPdate格式化选项来调整格式。
如果你使用PHP 5,你也可以尝试
$oDate = new DateTime($row->createdate); $sDate = $oDate->format("Ymd H:i:s");
$valid_date = date( 'm/d/yg:i A', strtotime($date));
参考: http : //php.net/manual/en/function.date.php
更简单的方法是直接在MySQL查询中格式化date,而不是PHP。 请参阅DATE_FORMAT的MySQL手册条目 。
如果你想用PHP来做,那么你需要date函数,但是你必须首先将数据库值转换成时间戳。
最后,PHP 5.3及以上版本的正确解决scheme:
$date = DateTime::createFromFormat('Ymd H:i:s', $mysql_source_date); echo $date->format('m/d/yh:i a');
忘记一切。 只要使用:
$date = date("Ymd H:i:s",strtotime(str_replace('/','-',$date)))
为了在PHP中正确格式化一个用于存储在MySQL中的DateTime
对象,使用了MySQL使用的标准格式,即ISO 8601 。
PHP从5.1.1开始就把这种格式保存为一个常量,我强烈推荐使用它,而不是每次手动inputstring。
$dtNow = new DateTime(); $mysqlDateTime = $dtNow->format(DateTime::ISO8601);
这和其他PHPdate时间常量列表可在http://php.net/manual/en/class.datetime.php#datetime.constants.types
这应该在SQL查询中格式化一个字段:
SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
使用datefunction:
<?php echo date("m/d/yg:i (A)", $DB_Date_Field); ?>
取决于你的MySQLdate时间configuration。 通常: 2011-12-31 07:55:13格式。 这个非常简单的function应该做到这一点:
function datetime() { return date( 'Ymd 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("Ymd 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代码中的每个函数,为了显示预期的date格式,请在源代码(数据库)中更改它。
使用as运算符来命名行是非常重要的(如dateFrom,如dateUntil)。 你写的名字是名字,行将在你的结果中被调用。
这个例子的输出将是
[月份的date,数字(0..31)]。[月份名称(1月… 12月)]。[年份,数字,4位数字]
例如:2015年8月5日
用select的分隔符更改点,并检查DATE_FORMAT(date,格式)函数以获取更多date格式。
你也可以让你的查询返回一个Unix时间戳。 这将摆脱调用strtotime()
的需要,并使事情在PHP方面less一点密集…
select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
然后在PHP中使用date()
函数来设置它的格式,无论你喜欢的方式。
<?php echo date('l jS \of FY h:i:s A', $row->unixtime); ?>
要么
<?php echo date('F j, Y, g:i a', $row->unixtime); ?>
我喜欢这种方法,而不是使用MySQL的DATE_FORMAT
函数,因为它允许您重复使用相同的查询来获取数据,并允许您在PHP中更改格式。
有两个不同的查询只是为了改变date在用户界面中的方式。
你可以有没有在Unix时间戳返回的date有麻烦,所以这对我的作品…
return date("F j, Y g:ia", strtotime(substr($datestring, 0, 15)))
这将工作…
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
使用PHP版本4.4.9和MySQL 5.0,这为我工作:
$oDate = strtotime($row['PubDate']); $sDate = date("m/d/y",$oDate); echo $sDate
PubDate
是MySQL中的列。
$date = "'".date('Ymd H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";