php格式化时间戳
CMS中一般显示时间比较新的文章需要显示几分钟前,几天前这样,但是一般数据库里面记录的都是时间戳(至少我习惯这样),所以就需要一个转化的过程,根据网上的资料加上自己的修改整理封装了两段代码
下面是封装好的方法
functionformatTime($time){ $time=(int)substr($time,0,10); $int=time()-$time; $str=''; if($int<=2){ $str=sprintf('刚刚',$int); }elseif($int<60){ $str=sprintf('%d秒前',$int); }elseif($int<3600){ $str=sprintf('%d分钟前',floor($int/60)); }elseif($int<86400){ $str=sprintf('%d小时前',floor($int/3600)); }elseif($int<2592000){ $str=sprintf('%d天前',floor($int/86400)); }else{ $str=date('Y-m-dH:i:s',$time); } return$str; }
或者更详细的
functionformatTime($time) { $text=''; $time=intval($time); $ctime=time(); $t=$ctime-$time;//时间差 if($t<0){ returndate('Y-m-d',$time); } ; $y=date('Y',$ctime)-date('Y',$time);//是否跨年 switch($t){ case$t==0: $text='刚刚'; break; case$t<60://一分钟内 $text=$t.'秒前'; break; case$t<3600://一小时内 $text=floor($t/60).'分钟前'; break; case$t<86400://一天内 $text=floor($t/3600).'小时前';//一天内 break; case$t<2592000://30天内 if($time>strtotime(date('Ymd',strtotime("-1day")))){ $text='昨天'; }elseif($time>strtotime(date('Ymd',strtotime("-2days")))){ $text='前天'; }else{ $text=floor($t/86400).'天前'; } break; case$t<31536000&&$y==0://一年内不跨年 $m=date('m',$ctime)-date('m',$time)-1; if($m==0){ $text=floor($t/86400).'天前'; }else{ $text=$m.'个月前'; } break; case$t<31536000&&$y>0://一年内跨年 $text=(11-date('m',$time)+date('m',$ctime)).'个月前'; break; default: $text=(date('Y',$ctime)-date('Y',$time)).'年前'; break; } return$text; }
再分享一个类似的
//格式化友好显示时间 functionformatTime($time){ $now=time(); $day=date('Y-m-d',$time); $today=date('Y-m-d'); $dayArr=explode('-',$day); $todayArr=explode('-',$today); //距离的天数,这种方法超过30天则不一定准确,但是30天内是准确的,因为一个月可能是30天也可能是31天 $days=($todayArr[0]-$dayArr[0])*365+(($todayArr[1]-$dayArr[1])*30)+($todayArr[2]-$dayArr[2]); //距离的秒数 $secs=$now-$time; if($todayArr[0]-$dayArr[0]>0&&$days>3){//跨年且超过3天 returndate('Y-m-d',$time); }else{ if($days<1){//今天 if($secs<60)return$secs.'秒前'; elseif($secs<3600)returnfloor($secs/60)."分钟前"; elsereturnfloor($secs/3600)."小时前"; }elseif($days<2){//昨天 $hour=date('h',$time); return"昨天".$hour.'点'; }elseif($days<3){//前天 $hour=date('h',$time); return"前天".$hour.'点'; }else{//三天前 returndate('m月d号',$time); } } }