Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:一小时前,x小时前_Php - Fatal编程技术网

PHP:一小时前,x小时前

PHP:一小时前,x小时前,php,Php,因此,我有这个函数来显示从插入的unix格式时间戳(time())生成的时间: 我想扩展这个函数,如果它不到24小时,它应该计算并回显“x小时前”,如果是昨天或以后,它应该像现在一样回显(回显:“.$time;”) 如何做到这一点?不到24小时前是3600*24,即 $time_now-3600*24 然后 不到24小时前为3600*24,即 $time_now-3600*24 然后 你遇到的困难是什么?困难?这只是一个很好的/简单的方法,不是我想要的一个特别的难度“级别”。(对不起,如果我

因此,我有这个函数来显示从插入的unix格式时间戳(time())生成的时间:

我想扩展这个函数,如果它不到24小时,它应该计算并回显“x小时前”,如果是昨天或以后,它应该像现在一样回显(回显:“.$time;”)


如何做到这一点?

不到24小时前是3600*24,即

$time_now-3600*24
然后


不到24小时前为3600*24,即

$time_now-3600*24
然后


你遇到的困难是什么?困难?这只是一个很好的/简单的方法,不是我想要的一个特别的难度“级别”。(对不起,如果我误解了你的问题,我不是英国人)你遇到的困难是什么?困难?这只是一个很好的/简单的方法,不是我想要的一个特别的难度“级别”。(对不起,如果我误解了你的问题,我不是英语)可能的时间重复是以秒为单位的,除法应该是
$diff/(24*3600)
两次编辑:dbl按时间戳引用,$diff/3600不是24。否则,就必须采取切实可行的办法;创建一个函数并添加几个选项(…“几天前”、“上周三”等),您的状态就很好了。@Hans:Tanks,更新了代码$diff/3600当然是正确的。@matiasf我刚刚测试了这段代码,得到的输出是0.584444小时前的。每次我刷新页面时,“0.584444小时前”会更改为其他不同的值,如0.6216666667等等。@Karem:您应该使用intval($diff)将$diff转换为整数。对于最近的时间戳,可以执行单独的检查,并返回分钟值。时间以秒为单位,除法应为
$diff/(24*3600)
两次编辑:dbl按时间戳引用,$diff/3600而不是24。否则,就必须采取切实可行的办法;创建一个函数并添加几个选项(…“几天前”、“上周三”等),您的状态就很好了。@Hans:Tanks,更新了代码$diff/3600当然是正确的。@matiasf我刚刚测试了这段代码,得到的输出是0.584444小时前的。每次我刷新页面时,“0.584444小时前”会更改为其他不同的值,如0.6216666667等等。@Karem:您应该使用intval($diff)将$diff转换为整数。对于最近的时间戳,可以执行单独的检查,并返回分钟值。
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");

}
/*
* @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;
}