显示刚刚,几分钟前,昨天,几天前,具体时间逻辑
时间格式为:2023-11-27 17:28:59
function relativeTime($dateTimeString) {
$currentTime = new \DateTime();
$commentTime = new \DateTime($dateTimeString);
$interval = $currentTime->diff($commentTime);
// 如果差异在60秒以内
if ($interval->s < 60 && $interval->i == 0 && $interval->h == 0 && $interval->d == 0) {
return '刚刚';
}
// 如果评论是今天的,且差异小于一小时
elseif ($currentTime->format('Y-m-d') == $commentTime->format('Y-m-d')) {
if ($interval->h == 0) {
return $interval->i . '分钟前';
}
return $commentTime->format('H:i'); // 显示上午/下午 时间
}
// 如果评论是昨天的
$yesterdayTime = clone $currentTime;
$yesterdayTime->modify('-1 day');
if ($yesterdayTime->format('Y-m-d') == $commentTime->format('Y-m-d')) {
return '昨天 ' . $commentTime->format('H:i');
}
// 如果评论是一周内的
elseif ($interval->days > 0 && $interval->days <= 7) {
return $interval->days . '天前';
}
// 超过一周,显示具体日期
else {
return $commentTime->format('Y-m-d');
}
}