在项目中时间一律显示为2020-9-8 10:03显得很呆板。在微博、QQ空间等网站都会显示为几秒前,几分钟前,几小时前等容易阅读的时间,我们称之为友好的时间格式。那么这个功能是怎么实现的?

其实只需要使用函数将时间过滤计算即可,原理特别简单。

我们都知道,一分钟是60秒,一小时是60分钟,一天又是24小时,一个月又是大约30天,一年就是12个月

那么我们可以计算出每个单位的秒数如下

时间单位秒数
一分钟60
一小时3600
一天86400
一个月2592000
一年31104000

那么我们就可以用我们当前时间减去需要转换的时间,得出的时间再转换为秒,与上方表格的数据对比,例如我们得出的秒数76秒,那么我们就使用if比较一下>60秒时的返回信息,当他大于60秒,那么就使用它除以60秒,约等于1,那么就是一分钟前

下边这个函数是我前段时间开发时从网上找到的,我自己进行了增强,他原先这个函数是不支持年为单位的计算的,大家可以参考一下。

function time_tran($the_time) {
    $now_time = date("Y-m-d H:i:s", time());
    $now_time = strtotime($now_time);
    $show_time = strtotime($the_time);
    $dur = $now_time - $show_time;
    if ($dur < 0) {
        return $the_time;
    } else {
        if ($dur < 60) {
            return $dur . '秒前';
        } else {
            if ($dur < 3600) {
                return floor($dur / 60) . '分钟前';
            } else {
                if ($dur < 86400) {
                    return floor($dur / 3600) . '小时前';
                } else {
                    if ($dur < 2592000) {//30天内
                        return floor($dur / 86400) . '天前';
                    } else {
                        if ($dur < 31104000) {//12月内
                            return floor($dur / 2592000) . '月前';
                        }else{
                            if ($dur < 3110400000) {//100年内
                                return floor($dur / 31104000) . '年前';
                            } else{
                                return $the_time;
                            }
                        }
                    }
                }
            }
        }
    }
}
最后修改:2020 年 09 月 11 日 10 : 12 AM
正在沿街乞讨中...