素材牛VIP会员
php时间戳格式化问题
 黄***o  分类:PHP代码  人气:723  回帖:7  发布于6年前 收藏

看到一些客户端上面还有正在用的这个segmentfault网站,发表完问题或者回答或者评论,都会出现刚刚,几分钟前,几小时前这种比较人性化的时间提示,请教各位大神这个具体要怎么计算?

 标签:php

讨论这个帖子(7)垃圾回帖将一律封号处理……

Lv4 码徒
錯***來 JS工程师 6年前#1

谢谢邀请,这个很好理解啊!就是根据你操作数据的时间和当前访问的时间做了个对比判断,然后根据时间差计算就可以了。我的这个例子你参考看看呢php date

Lv5 码农
风***在 产品经理 6年前#2

关键词 timeago
github 上很多,php js 都可以,我喜欢js控制。

Lv5 码农
橙***哒 JAVA开发工程师 6年前#3
function getDiffTime($timestamp) 
{
    $datetime = new DateTime(date('Y-m-d H:i:s', $timestamp));
    $datetime_now = new DateTime();
    $interval = $datetime_now->diff($datetime);
    list($y, $m, $d, $h, $i, $s) = explode('-', $interval->format('%y-%m-%d-%h-%i-%s'));
    if ((($result = $y) && ($suffix = '年前')) ||
        (($result = $m) && ($suffix = '月前')) ||
        (($result = $d) && ($suffix = '天前')) ||
        (($result = $h) && ($suffix = '小时前')) ||
        (($result = $i) && ($suffix = '分钟前')) ||
        (($result = $s) && ($suffix = '刚刚'))) {
        return $suffix != '刚刚' ? $result . $suffix : $suffix;
    }
}
Lv6 码匠
问***m Linux系统工程师 6年前#4

这个是根据你的发表问题时间或者回答时间或者评论时间与当前时间只差计算出来的。可参考我的这篇文章:https://segmentfault.com/a/11...

Lv3 码奴
sc***31 Linux系统工程师 6年前#5

你应该使用Carbon

use Carbon\Carbon;
echo Carbon::now()->subDays(5)->diffForHumans();// 5 days ago
Lv6 码匠
请***g JAVA开发工程师 6年前#6

这类应用,用前端js实现更好

Lv2 入门
蒙***生 职业无 6年前#7

楼上的代码确实很6, 我也提供一种方法吧

private function _formatTime($time){
        if($time < 60){                                         //模板中 以秒为单位显示
            $result=$time.'秒前';
        }elseif($time > 60  && $time < 3600){                  //模板中 以分钟为单位显示
            $result=(int)($time/(60)).'分钟前';
        }elseif($time > 3600 && $time < 3600*24 ){             //模板中 显示以小时为单位
            $result=(int)($time/(3600)).'小时前';
        }elseif($time > 3600*24 ){
            $result=(int)($time/(3600*24)).'天前';//模板中 显示以天为单位
    }
    return $result;
}
写一个私有的方法,直接调用就好了。
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取