您的位置:首页 > 编程语言 > PHP开发

php 友好时间转换方法

2016-07-26 09:19 501 查看
     我们在社交产品中的时间显示都不是直接显示具体时间,而是转换成友好时间,以下就是转换函数

/**
* 友好的时间显示
*
* @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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 社交 时间 转换