2011-04-05 111 views
29

我存储在MySQL表日期,它们被设置为存储在每行CURRENT TIMESTAMP和存储如下:将mysql时间戳转换成实际的日期和时间?

2010-05-29 01:17:35 

但我所试图做的就是以某种方式使用PHP能够单独的一切,并创建一个日期更像:

2010年5月29日上午01点17

谁能至少引导我,我应该走正道。任何帮助是极大的赞赏!

回答

51
echo date('M j Y g:i A', strtotime('2010-05-29 01:17:35')); 

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

+0

太棒了!非常感谢!那太简单了!再次感谢! – mcbeav 2011-04-05 04:41:58

+0

请务必在化合物格式页面的PHP手册中查看* Localized Notations * http://php.net/manual/en/datetime.formats.compound.php – 2016-04-25 23:41:13

20

有两种解决方法:


在PHP代码,这意味着使用:

echo date('M j Y g:i A', strtotime('2010-05-29 01:17:35')); 

或者:

$dt = new DateTime('2010-05-29 01:17:35'); 
echo $dt->format('M j Y g:i A'); 


strtotime + date是你看惯了大部分的解决方案;但它不是最好的解决方案:对于那些,你将使用UNIX Timestamps,这意味着有限的日期范围(从1970年到2038年,如果使用32位整数)

另一方面,使用DateTime类,可以使用的日期范围没有限制。

+3

[“范围从约292亿年过去在未来一样。“](http://php.net/manual/en/intro.datetime.php) - 不会真的叫*”无限制“*。哦,无论如何+1。 ;-))) – deceze 2011-04-05 04:46:22

+5

Humph,我确定有人会说这不是* unlimited * ;-) – 2011-04-05 04:47:46

+0

对不起,专业的习惯。 ;-P – deceze 2011-04-05 04:48:20

1

如果你在你的表有DATETIME场,你只需要日期字段,则:

SELECT DATE_FORMAT(timestamp,'%M %D, %Y') FROM Mytable; 

或:

SELECT DATE_FORMAT(timestamp,'%Y-%m-%d') FROM Mytable; 

其中timestamp是你的列名。