在微博上发布消息的时候,一定会看到一种情况:某某人多少分钟前发布了一条消息:
这种即时处理的人性化方式下面来介绍在PHP下是如何实现这一功能的。
在看源码前,我们先要了解,在php中系统的时间函数:time() 该函数能调出当前的时间(该时间为unix时间戳,关于Unix时间戳,是从1970年0时0分0秒开始到现在的秒数);下面还需要了解一个能处理该时间戳的函数:date() 。
为了更好解释以上函数的用法,我举个例子:
$time=time(); $time=date("y-m-d H:i:s",$time); echo $time;
第一行把当前时间戳给变量$time
第二行用函数date()对变量$time进行处理,并把值输出到变量$time上
第三行输出变量$time
了解了以上用法,下面来看把时间处理成多少分钟前的一个类函数:
function time_ago($cur_time){ $agoTime = time() - $cur_time; if ( $agoTime <= 60 ) { return $agoTime.'秒前'; }elseif( $agoTime <= 3600 && $agoTime > 60 ){ return intval($agoTime/60) .'分钟前'; }elseif ( date('d',$cur_time) == date('d',time()) && $agoTime > 3600){ return '今天 '.date('H:i',$cur_time); }elseif( date('d',$cur_time+86400) == date('d',time()) && $agoTime < 172800){ return '昨天 '.date('H:i',$cur_time); }else{ return date('Y年m月d日 H:i',$cur_time); } }
类函数的用法:
$weibotime='1326168340'; echo time_ago($weibotime);
变量$weibotime赋值uinx时间戳。
该类可以用在任意需要输出时间的地方,2个函数都为php自带函数。可以判断多少秒内,多少分钟内,对超过1小时的给出 "今天 10:39"这种类型的时间,对超过1天的给出 "昨天 3:10"类型的时间;对于超过这些时间的都以输出 "2012年1月11日 5:30" 这种类型的时间。