2013-05-20 48 views
-1

我從一個數據庫,該數據庫是一個millsecond接收下面的值(microtime中)值microtime中以相對日期轉換

1369057622.4679

我想輸出這在PHP是

3日的前

基本上讀取毫秒值並將其轉換爲相對日期字符串,任何人都可以提出一個簡單的方法來做到這一點。

+0

microtime中()給出當前microtime中。如果你減去兩者,你會得到微秒的差異。您可以按增量進行分配以獲得天數:$ days = floor($ diff/1000/60/60/24);我加了樓,所以你沒有得到3.1231234213451234912873519875天。 – kainaw

+0

如果你想要更多的靈活性(不只是顯示幾天,但幾周或幾小時,它們更重要),查找[DateTime :: Diff](http://www.php.net/manual/en/datetime.diff)。 PHP)和生成的DateInterval對象。創建對象的開銷比簡單的分割要多,但是您可以使用任何想要的方式來設置輸出的格式。 – Jerry

回答

1

你可以做到以下幾點:

$input = 1369057622.4679; 

$diff = floor(($input-time())/86400); // calculating the difference 

$result = abs($diff) . (abs($diff)==1 ? ' day ':' days ') . ($diff<=0 ? 'ago':'ahead'); // making the result. 
echo $result; // output: 1 day ago 
+0

diff應該基於microtime(),而不是time()。用戶正在使用的輸入以毫秒爲單位。時間函數返回秒。所以,你從毫秒減去秒。 – kainaw

+0

@ kainaw這正是我第一次看到的想法,但輸入不是以毫秒爲單位,而是以秒爲單位,而'.'被認爲是毫秒,但由於OP希望在幾天內輸出,所以我們可以「該值因爲毫秒部分並不真正相關。試着做'echo time();',結果是'〜1369138801',與'1369057622.4679'比較。 – HamZa