完全逻辑代码
/**
* 友好的时间展示
* @param int $time 时间戳
* @param string $format 默认显示格式化方式
* @return string 返回时间,错误时返回为空字符串
*/
function diy_friend_date($time, $format='Y-m-d')
{
if (!$time)
return '';
$nowtime = time();
if ($time > $nowtime){
return date($format, $time);
}
$Y = date('Y', $time);//年份
$z = date('z', $time);//当前的第几天
$nowY = date('Y', $nowtime);
$nowz = date('z', $nowtime);
if ($z > $nowz){
$nowz += 365;
}
$diffz = $nowz - $z;//获取差异天
$diffs = $nowtime - $time;//获取差异秒
if ($diffz >= 365){
return ($nowY-$Y).'年前';
} elseif ($diffz >= 30){
return floor($diffz / 30).'个月前';
} elseif ($diffz >= 7){
return floor($diffz / 7).'个星期前';
} elseif ($diffz >= 3){
return $diffz.'天前';
} elseif ($diffz >= 2){
return '前天';
} elseif ($diffz >= 1) {
return '昨天';
} elseif ($diffs >= 3600) {
return floor($diffs / 3600).'小时前';
} elseif ($diffs >= 300) {
return floor($diffs / 60).'分钟前';
} else {//五分钟内
return '刚刚'.$diffs.'秒';
}
}
频繁更新的网站,这样可能效率不高,可以二分或者三分,减少if判断次数,自己根据情况判断
/**
* 友好的时间展示
* @param int $time 时间戳
* @param string $format 默认显示格式化方式
* @return string 返回时间,错误时返回为空字符串
*/
function diy_friend_date($time, $format='Y-m-d')
{
if (!$time)
return '';
$nowtime = time();
if ($time > $nowtime){
return date($format, $time);
}
$Y = date('Y', $time);//年份
$z = date('z', $time);//当前的第几天
$nowY = date('Y', $nowtime);
$nowz = date('z', $nowtime);
if ($z > $nowz){
$nowz += 365;
}
$diffz = $nowz - $z;//获取差异天
$diffs = $nowtime - $time;//获取差异秒
if ($diffz <= 7){
if ($diffz >= 3){
return $diffz.'天前';
} elseif ($diffz >= 2){
return '前天';
} elseif ($diffz >= 1) {
return '昨天';
} elseif ($diffs >= 3600) {
return floor($diffs / 3600).'小时前';
} elseif ($diffs >= 300) {
return floor($diffs / 60).'分钟前';
} else {//五分钟内
return '刚刚'.$diffs.'秒';
}
} else {
if ($diffz >= 365){
return ($nowY-$Y).'年前';
} elseif ($diffz >= 30){
return floor($diffz / 30).'个月前';
//} elseif ($diffz >= 7){
} else{
return floor($diffz / 7).'个星期前';
}
}
}