分享一个php友好的比较完成的时间格式化函数,包括‘刚刚’,'几秒之前',‘几分钟前’,'几小时前',几天前,几周前,几个月前等。调用方式很简单,是从ThinkSNS 里面拿出来的。
1 /** 2 * 友好的时间显示 3 * 4 * @param int $sTime 待显示的时间 5 * @param string $type 类型. normal | mohu | full | ymd | other 6 * @param string $alt 已失效 7 * @return string 8 */ 9 function friendlyDate($sTime,$type = 'normal',$alt = 'false') { 10 if (!$sTime) 11 return ''; 12 //sTime=源时间,cTime=当前时间,dTime=时间差 13 $cTime = time(); 14 $dTime = $cTime - $sTime; 15 $dDay = intval(date("z",$cTime)) - intval(date("z",$sTime)); 16 //$dDay = intval($dTime/3600/24); 17 $dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime)); 18 //normal:n秒前,n分钟前,n小时前,日期 19 if($type=='normal'){ 20 if( $dTime < 60 ){ 21 if($dTime < 10){ 22 return '刚刚'; //by yangjs 23 }else{ 24 return intval(floor($dTime / 10) * 10)."秒前"; 25 } 26 }elseif( $dTime < 3600 ){ 27 return intval($dTime/60)."分钟前"; 28 //今天的数据.年份相同.日期相同. 29 }elseif( $dYear==0 && $dDay == 0 ){ 30 //return intval($dTime/3600)."小时前"; 31 return '今天'.date('H:i',$sTime); 32 }elseif($dYear==0){ 33 return date("m月d日 H:i",$sTime); 34 }else{ 35 return date("Y-m-d H:i",$sTime); 36 } 37 }elseif($type=='mohu'){ 38 if( $dTime < 60 ){ 39 return $dTime."秒前"; 40 }elseif( $dTime < 3600 ){ 41 return intval($dTime/60)."分钟前"; 42 }elseif( $dTime >= 3600 && $dDay == 0 ){ 43 return intval($dTime/3600)."小时前"; 44 }elseif( $dDay > 0 && $dDay<=7 ){ 45 return intval($dDay)."天前"; 46 }elseif( $dDay > 7 && $dDay <= 30 ){ 47 return intval($dDay/7) . '周前'; 48 }elseif( $dDay > 30 ){ 49 return intval($dDay/30) . '个月前'; 50 } 51 //full: Y-m-d , H:i:s 52 }elseif($type=='full'){ 53 return date("Y-m-d , H:i:s",$sTime); 54 }elseif($type=='ymd'){ 55 return date("Y-m-d",$sTime); 56 }else{ 57 if( $dTime < 60 ){ 58 return $dTime."秒前"; 59 }elseif( $dTime < 3600 ){ 60 return intval($dTime/60)."分钟前"; 61 }elseif( $dTime >= 3600 && $dDay == 0 ){ 62 return intval($dTime/3600)."小时前"; 63 }elseif($dYear==0){ 64 return date("Y-m-d H:i:s",$sTime); 65 }else{ 66 return date("Y-m-d H:i:s",$sTime); 67 } 68 } 69 }
/**
* 友好的时间显示
*
* @param int $sTime 待显示的时间
* @param string $type 类型. normal | mohu | full | ymd | other
* @param string $alt 已失效
* @return string
*/
function friendlyDate($sTime,$type = 'normal',$alt = 'false') {
if (!$sTime)
return '';
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date("z",$cTime)) - intval(date("z",$sTime));
//$dDay = intval($dTime/3600/24);
$dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime));
//normal:n秒前,n分钟前,n小时前,日期
if($type=='normal'){
if( $dTime < 60 ){
if($dTime < 10){
return '刚刚'; //by yangjs
}else{
return intval(floor($dTime / 10) * 10)."秒前";
}
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
//今天的数据.年份相同.日期相同.
}elseif( $dYear==0 && $dDay == 0 ){
//return intval($dTime/3600)."小时前";
return '今天'.date('H:i',$sTime);
}elseif($dYear==0){
return date("m月d日 H:i",$sTime);
}else{
return date("Y-m-d H:i",$sTime);
}
}elseif($type=='mohu'){
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif( $dDay > 0 && $dDay<=7 ){
return intval($dDay)."天前";
}elseif( $dDay > 7 && $dDay <= 30 ){
return intval($dDay/7) . '周前';
}elseif( $dDay > 30 ){
return intval($dDay/30) . '个月前';
}
//full: Y-m-d , H:i:s
}elseif($type=='full'){
return date("Y-m-d , H:i:s",$sTime);
}elseif($type=='ymd'){
return date("Y-m-d",$sTime);
}else{
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif($dYear==0){
return date("Y-m-d H:i:s",$sTime);
}else{
return date("Y-m-d H:i:s",$sTime);
}
}
}
作者:zqifa