根据时间戳,与当前时间对比过去多久包括未来
写一个php函数,传入时间戳,返回距离此刻的时间,超过1年的显示年月日,超过一个月的显示月日,超过一天的显示n天前n天后,超过1小时的显示n小时前n小时后,超过1分钟到,显示n分钟前n分钟后,超过5秒的显示n秒前n秒后,5秒内的显示刚刚
/**
* 根据时间戳,与当前时间对比过去多久包括未来
* @param $timestamp
* @return false|string
*/
public static function seeing($timestamp)
{
$now = time();
$diff = $now - $timestamp;
$absDiff = abs($diff);
$prefix = ($diff > 0 ? "" : "在");
$suffix = ($diff > 0 ? "前" : "后");
if ($absDiff < 5) {
return "刚刚";
}
if ($absDiff < 60) {
return $prefix . $absDiff . "秒" . $suffix;
}
if ($absDiff < 3600) {
return $prefix . floor($absDiff / 60) . "分钟" . $suffix;
}
if ($absDiff < 86400) {
return $prefix . floor($absDiff / 3600) . "小时" . $suffix;
}
if ($absDiff < 2592000) {
return $prefix . floor($absDiff / 86400) . "天" . $suffix;
}
if ($absDiff < 31536000) {
return date($diff > 0 ? "m月d日" : "m-d", $timestamp);
}
return date($diff > 0 ? "Y年m月d日" : "on Y-m-d", $timestamp);
}