2010-08-12 122 views
1

所以我有這個函數來顯示從插入的UNIX格式的時間戳產生的時間(時間()):PHP:一個小時前,X小時前

function get_time($timestamp) { 
    $time = date('G:i', $timestamp); 
    echo " at: ".$time; 
    return $time; 
} 

我想擴大這個功能,並會喜歡這樣做,如果它已經在24小時以下,它應該計算和回聲「x小時前」,如果它的昨天或晚些時候,它應該只是現在回聲(echo「at:」。$ time;)。

這怎麼辦?

+0

什麼困難你遇到? – Artefacto 2010-08-12 17:11:34

+0

難度?只是一個很好的/簡單的方式,它可以做到,不是真正的特殊難度「水平」即時通訊尋求。 (對不起,如果我誤解你的問題,即時通訊不是英語) – Karem 2010-08-12 17:14:59

+0

[PHP的可能重複如何查找自日期時間過去的時間?](http://stackoverflow.com/questions/2915864/php-how-to-find - 時間自從日期時間) – raveren 2015-08-19 09:18:38

回答

5

不到24小時前爲3600 * 24,即

$time_now-3600*24 

然後

if($timestamp > (time() - (3600*24))) { 

// Calculate time difference 

$diff = time() - $timestamp; 

$hours = $diff/3600; 

echo $hours . " hours ago"; 

} else { 

echo "at" . date("x-y-z", $timestamp"); 

} 
+0

時間以秒爲單位,除法應該是'$ diff /(24 * 3600)' – 2010-08-12 17:18:42

+1

夫婦的編輯:dbl引號時間戳和$ diff/3600不是24.另有一種可靠的方式來處理它;創建一個函數並添加一些選項(......「前幾天」,「上週三」等),並且您狀態良好。 – Hans 2010-08-12 17:23:14

+0

@漢斯:坦克,更新了代碼。 $ diff/3600當然是正確的。 – matiasf 2010-08-12 17:26:17

0
/* 
* @author Alexander.Plutov 
* @param int $timestamp 
* @param float $hours_ago 
* @return date 
*/ 
function get_time($timestamp, $hours_ago) { 
    $seconds_ago = $hours_ago * 60 * 60 * 24; 
    $new_timestamp = $timestamp - $seconds_ago; 
    $time = date('G:i', $new_timestamp); 
    echo " at: ".$time; 
    return $time; 
} 
相關問題