php format w3,【php】php时间戳格式化问题

本文探讨了如何在客户端应用中实现如SegmentFault网站那样的时间提示功能,通过PHP和Carbon库计算发表、回答或评论与当前时间的差距,提供精确到分钟、小时、天的提示,同时介绍了JavaScript实现的方法。
摘要由CSDN通过智能技术生成

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

回答

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

}

}

use Carbon\Carbon;

echo Carbon::now()->subDays(5)->diffForHumans();// 5 days ago

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

关键词 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实现更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值