2011-04-05 110 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是你的列名。