PHP获取时间是几天前几月前几年前

我们在浏览很多网站的时候都会看到他们不会把时间直接打印出来,而是通过函数处理后计算出时间是几秒前几分前几小时前等等,那么这个功能是怎么实现的?

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

我们都知道,一分钟是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;
							}
						}
					}
				}
			}
		}
	}
}
0

没有评论

No comments yet

发表评论

电子邮件地址不会被公开。 必填项已用*标注