php时间戳格式化问题
阿神
阿神 2017-04-11 10:09:03
0
7
397

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

阿神
阿神

闭关修行中......

全部回覆 (7)
小葫芦

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

    小葫芦
    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; } }
      巴扎黑

      你应该使用Carbon

      use Carbon\Carbon; echo Carbon::now()->subDays(5)->diffForHumans();// 5 days ago
        刘奇

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

          Peter_Zhu

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

            黄舟

            楼上的代码确实很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; } 写一个私有的方法,直接调用就好了。
              迷茫

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

                最新下載
                更多>
                網站特效
                網站源碼
                網站素材
                前端模板
                關於我們 免責聲明 Sitemap
                PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!