在一些网站上常常可以看到一篇文章发布的时间显示几分钟前,几小时前或几天前,这种时间的书写方式可以很方便一些对时间日期不敏感的访客。在php脚本中想实现这种时间的表现方式该如何做呢?

php时间转换为几分钟前,几小时前,几天前,几月前的方法

方法1:自定义一个php显示几分钟前,几小时前,几天前的函数

/**
 * # php显示几分钟前,几小前,昨天,前天,多少天前的函数
 * @param $posttime 格式化后的时间
 * @ 墨初 http://www.feiniaomy.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('2021/05/12 10:08:12');

方法2:php自定义一个显示几分钟前,几小时前,几天前,几月前,几年的函数

/**
 * # php显示几分钟前,几小前,昨天,前天,多少天前的函数
 * # 此方法来自zblog wiki 文档
 * @param $posttime 格式化后的时间
 * @ 墨初 http://www.feiniaomy.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('2021/05/12 10:08:12');