2012-02-20 35 views
0

我有一個SQL郵戳是這樣的:2012-02-20 21點十四分54秒打印出相對日期/時間從SQL/PHP郵戳

我怎麼會打印出PHP的相對日期和時間?

例如

發生:幾秒鐘前 發生:4分鐘前 發生:4小時前 發生:週一2012年1月8日

我只是想打印出的實際日期

+0

我建議你看一看的Zend框架'Zend_Date'解析日期,並根據您的區域設置和其他要求對其進行格式化。 – Vitamin 2012-02-20 21:25:18

+0

嘿,那不是很難編碼。 [這裏是一個例子](http://dev-tips.com/featured/creating-a-relative-time-function)只需要雙手工作。 – 2012-02-20 21:30:23

+1

如果在數據庫服務器和您的Web服務器之間進行比較,在出於任何原因您的時鐘不準確時,我會小心謹慎。就我個人而言,我總是會和like一樣比較,所以我會比較數據庫服務器的datetime和數據庫服務器的NOW(),以確保使用相同的時鐘。 – 2012-02-20 21:33:12

回答

2

小時後谷歌兩秒http://www.mdj.us/web-development/php-programming/another-variation-on-the-time-ago-php-function-use-mysqls-datetime-field-type

一般來說,你選擇像秒時間單位,測試,如果時間差越小則該單位的最高值(60秒)後,發現這一點,如果是的話,打印出「$ timeDifference $單位「。如果不是,則將差值除以單位最大值並從下一個更高單位(分鐘)開始。

實施例:

$timeDif = 60*60*5 + 45; // == 5 hours 45 seconds 

// 60 seconds in a minute 
if ($timeDif < 60) // false 
    return "$timeDif second(s) ago"; 

// convert seconds to minutes 
$timeDif = floor($timeDif/60); // == 300 = 5 * 60 

// 60 minutes in an hour 
if ($timeDif < 60) // false 
    return "$timeDif minute(s) ago"; 

// convert minutes to hours 
$timeDif = floor($timeDif/60); // == 5 

// 24 hours in a day 
if ($timeDif < 24) 
    return "$timeDif hour(s) ago"; 

// ... 
+0

該鏈接是404頁面 – Talon 2012-02-20 22:10:33

+0

http://www.mdj.us/web-development/php-programming/another-variation-on-the-time-ago-php-function-use-mysqls-datetime-field-鍵入/ – Basti 2012-02-20 22:14:46

0

即沒有如此難以代碼。而且做起來相當有趣。 Here a sample,只要把雙手工作。
開始轉換SQL郵戳到unixtime這樣的:

$unixtime = strtotime('2012-02-20 21:14:54'); 
+0

測試了他們的示例代碼,它總是說「未來」實際上並不奏效。 – Talon 2012-02-20 22:12:00

1

這裏有一個MySQL的解決方案可能是什麼樣子:

SELECT date_field, IF (DATEDIFF(NOW(), date_field) < 1, IF (TIMEDIFF(NOW(), date_field) < '01:00:00', CONCAT(MINUTE(TIMEDIFF(NOW(), date_field)), ' minutes'), CONCAT(HOUR(TIMEDIFF(NOW(), date_field)), ' hours')), date_field) AS occurred 
FROM table