PHP 时间差计算
·
功能说明
该 PHP 函数 secondsFormat 用于将时间戳转换为更人性化的相对时间格式(如“刚刚”、“X分钟前”),或特定日期格式(如“m月d日”)。适用于社交平台、评论系统等需要友好时间显示的场景。
核心逻辑分解
时间差计算
通过当前时间戳 $now 和输入时间戳 $time 的差值 $cha 判断时间间隔。
多级条件判断
- 小于60秒:返回“刚刚”。
- 超过4天:
- 同一年显示“m月d日”(如
05月20日)。 - 跨年显示“Y年m月d日”(如
2023年05月20日)。
- 同一年显示“m月d日”(如
- 4天内:
- 按天数分级(1天前/2天前/3天前)。
- 不足1天按小时显示(如
5小时前)。 - 不足1小时按分钟显示(如
30分钟前)。
优化建议
时区处理
确保 time() 和 date() 使用相同的时区设置,可通过 date_default_timezone_set() 提前配置。
边界值优化
当前代码中 $dz>3 实际包含4天内的部分情况(如3天23小时),与超过4天的逻辑略有重叠。建议调整条件顺序或明确边界。
代码简洁性
部分分支可合并,例如:
if ($dz >= 1) {
return $dz . '天前';
}
多语言支持
若需国际化,可将字符串(如“刚刚”)提取为变量或语言包。
完整代码(优化版)
function secondsFormat($time) {
$now = time();
$diff = $now - $time;
if ($diff < 60) {
return '刚刚';
}
if ($diff >= 4 * 24 * 60 * 60) {
return (date('Y', $now) == date('Y', $time))
? date("m月d日", $time)
: date("Y年m月d日", $time);
}
$minutes = floor($diff / 60);
$hours = floor($minutes / 60);
$days = floor($hours / 24);
if ($days >= 1) {
return $days . '天前';
}
if ($hours >= 1) {
return $hours . '小时前';
}
return $minutes . '分钟前';
}
更多推荐


所有评论(0)