2010-08-12 70 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; 
} 
相关问题