php怎么实现时间显示为几分钟前、几小时前、几天前、几月前
墨初 编程开发 1140阅读
看了几个大佬的博客,他们博文的发布时间都会根据当前的时间转换显示为几分钟前,几小时前或者几天前,几月前。下面73so的博主也写了几个转换时间的函数,大家可以参考哦。
php时间转换为几分钟前,几小时前,几天前,几月前的方法
方法1:
/** * @name php显示几分钟前,几小前,昨天,前天,多少天前的函数 * @param $posttime 格式化后的时间 * * @return string * https://www.73so.com */ function time_ago($posttime) { $nowtimes = strtotime(date('Y-m-d H:i:s'),time()); $posttimes = strtotime($posttime); $counttime = $nowtimes - $posttimes; if($counttime<=10){ return '刚刚'; }else if($counttime>10 && $counttime<=30){ return '刚才'; }else if($counttime>30 && $counttime<=60){ return '刚一会'; }else if($counttime>60 && $counttime<=120){ return '1分钟前'; }else if($counttime>120 && $counttime<=180){ return '2分钟前'; }else if($counttime>180 && $counttime<3600){ return intval(($counttime/60)).'分钟前'; }else if($counttime>=3600 && $counttime<3600*24){ return intval(($counttime/3600)).'小时前'; }else if($counttime>=3600*24 && $counttime<3600*24*2){ return '昨天'; }else if($counttime>=3600*24*2 && $counttime<3600*24*3){ return '前天'; }else if($counttime>=3600*24*3 && $counttime<=3600*24*20){ // 这里设置超过多少天后返回输入的时间 return intval(($counttime/(3600*24))).'天前'; }else{ return $posttime; } } echo time_ago('2022/11/23 12:59:33'); // 昨天 echo time_ago('2022/11/13 12:59:33'); // 11天前
方法2:
/** * @name php显示几分钟前,几小前,昨天,前天,多少天前的函数 * @param $posttime 格式化后的时间 * * @return string * https://www.73so.com */ function Time_Ago($ptime) { $ptime = strtotime($ptime); $etime = time() - $ptime; if($etime < 1) return '刚刚'; $interval = array ( 12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $ptime).')', 30 * 24 * 60 * 60 => '个月前 ('.date('m-d', $ptime).')', 7 * 24 * 60 * 60 => '周前 ('.date('m-d', $ptime).')', 24 * 60 * 60 => '天前', 60 * 60 => '小时前', 60 => '分钟前', 1 => '秒前' ); foreach ($interval as $secs => $str) { $d = $etime / $secs; if ($d >= 1) { $r = round($d); return $r . $str; } }; } echo Time_Ago('2022/11/23 12:59:33'); // 两天前 echo Time_Ago('2022/11/13 12:59:33'); // 2周前 (11-13) echo Time_Ago('2022/01/13 12:59:33'); // 11个月前 (01-13) echo Time_Ago('2021/01/13 12:59:33'); // 2年前 (2021-01-13)
方法3:
/** * @name php显示几分钟前,几小前,昨天,前天,多少天前的函数 * @param $posttime 格式化后的时间 * * @return string * https://www.73so.com */ function time_ago($posttime) { $agoTime = strtotime($posttime); // 计算出当前日期时间到之前的日期时间的毫秒数,以便进行下一步的计算 $time = time() - $agoTime; if ($time >= 31104000) { // N年前 $num = (int)($time / 31104000); return $num.'年前'; } if ($time >= 2592000) { // N月前 $num = (int)($time / 2592000); return $num.'月前'; } if ($time >= 86400) { // N天前 $num = (int)($time / 86400); return $num.'天前'; } if ($time >= 3600) { // N小时前 $num = (int)($time / 3600); return $num.'小时前'; } if ($time > 60) { // N分钟前 $num = (int)($time / 60); return $num.'分钟前'; } return '1分钟前'; } echo time_ago('2022/11/23 12:59:33'); // 1天前 echo time_ago('2022/11/13 12:59:33'); // 11天前 echo time_ago('2022/01/13 12:59:33'); // 10月前 echo time_ago('2021/01/13 12:59:33'); // 1年前
PS:上面给出了三个自定义函数,每个函数的计算方法与得到的结果也不相同,大家可以自己测试一下,选择合自己的!