2011-10-18 250 views
1

假設我有一個有趣的視頻網站向用戶顯示有趣的視頻。在每個視頻下方,我希望根據視頻的時間戳和當前時間,發佈「5秒前」,「31分鐘前」,「昨天」,「2天前」等聲明。我的格式是:2011-10-17 07:08:00日期和當前時間的時差?

我對日期並不太滿意,但我猜測我需要找到兩秒之間的日期/時間之差,然後決定是否在0秒之間以秒爲單位顯示60秒,或在60秒之間顯示& 3600秒以分鐘顯示,或者3600秒之間顯示3600x24秒之間3600x24秒顯示以小時爲單位,3600x24秒之間顯示3600x24x2秒之間3600x24x2秒之前顯示昨天,等等......我相信我應該使用strtotime(),但我似乎無法找到當前時間作爲那些解決方案我發現使用new date()似乎不工作!

我該怎麼做?

順便說一句,當我將2011-10-17, 7:08PM EDT插入到MySQL時間戳列時,它會被轉換爲2011-10-17 07:08:00即AM。我怎樣才能將它存儲在正確的AM/PM中?

+0

[如何以可讀格式表示兩個日期之間的差異]的可能重複(http://stackoverflow.com/questions/6542931/how-to-express-the-difference-between-two-dates在人類可讀的格式) – JJJ

+3

我喜歡第一句話。是否有趣的視頻網站正在播放有趣的視頻,這是問題的組成部分? :) – Alex

+2

讓我們假設:) – 0xCAFEBABE

回答

9

您可以使用php的DateTime函數。

$datetime1 = new DateTime('2011-10-17 07:08:00'); 
$datetime2 = new DateTime(); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 

從這裏你可以使用一些if語句來輸出的時間差以另一種格式(秒,分鐘,小時,月等),這取決於實際的時間差!輸出的格式是找到here

2

您可以非常容易地使用MySQL的DATEDIFFTIMEDIFF函數。兩者一起告訴你到底有多少時間過去了。