PHP时间变成几秒前,几分前,几小时前,几天前SNS模式

date:星期五, 三月 19th, 2010 at 11:54 下午 Categories:php

最近模仿UCHOME的DOING
我寸在MYSQL的时间都是unix时间。

function qtime($time){
       $limit = time() - $time;
 
       if($limit<60)
       $time="{$limit}秒前";
       if($limit>=60 && $limit<3600){
            $i = floor($limit/60);
            $_i = $limit%60;
            $s = $_i;
           $time="{$i}{$s}秒前";
       }
       if($limit>=3600 && $limit<3600*24){
            $h = floor($limit/3600);
            $_h = $limit%3600;
            $i = ceil($_h/60);
            $time="{$h}小时{$i}分前";
       }
       if($limit>=(3600*24) && $limit<(3600*24*30)){
            $d = floor($limit/(3600*24));
            $time= "{$d}天前";
        }
		if($limit>=(3600*24*30)){
            $time=gmdate('Y年n月j日', $time);
        }
		return $time;
}

使用方法:

$res['postdate']=qtime($res['postdate']);

另外分享网上其他的代码

function time_tran($the_time){
   $now_time = date("Y-m-d H:i:s",time()+8*60*60); 
   $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 < 259200){//3天内
        return floor($dur/86400).'天前';
       }else{
        return $the_time; 
       }
      }
     }
    }
   }
}

后来发现了个更简单的

function format_date($date,$isShowDate=true)
{
    $limit = time() - $date;
    if($limit < 60)
    {
        return $limit . '秒钟之前';
    }
    if($limit >= 60 && $limit < 3600)
    {
        return floor($limit/60) . '分钟之前';
    }
    if($limit >= 3600 && $limit < 86400)
    {
        return floor($limit/3600) . '小时之前';
    }
    if($limit >= 86400 and $limit<259200)
    {
        return floor($limit/86400) . '天之前';
    }
    if($limit >= 259200 and $isShowDate)
    {
        return date('Y-m-d H:i:s', $date);
    }else{
        return '';
    }
}

Leave a Reply