PHP计算指定时间为“刚刚/几分钟前/几小时前/几天前/几周前/几个月前/几年前”


在文章、评论等场合下经常会需要显示刚刚发布的、几分钟前发布的、几小时前发布的、几天前发布的等等。PHP语法如何利用函数实现这种功能呢?

封装函数

if (!function_exists('time_ago')) {
    /**
     * 返回指定时间戳为当前时间戳的几秒前、几分钟前、几小时前…
     * @param int $timestamp
     * @return string || null
     */
    function time_ago($timestamp) {
        if (!$timestamp) return;
        $difference = time() - $timestamp; //计算时间差
        if ($difference < 10) return '刚刚'; //小于10秒判定为刚刚
        // 定义计算数组对应的返回字符串
        $intervals = array (
            12 * 30 * 24 * 60 * 60  =>  '年前',
            30 * 24 * 60 * 60       =>  '个月前',
            7 * 24 * 60 * 60        =>  '周前',
            24 * 60 * 60            =>  '天前',
            60 * 60                 =>  '小时前',
            60                      =>  '分钟前',
            1                       =>  '秒前',
        );
        foreach ($intervals as $second => $unit) {
            $value = $difference / $second;
            if ($value >= 1) return round($value) . $unit;
        };
    }
}

调用输出

// 调用函数
$timestamp = 1702376111;
time_ago($timestamp);

2周前


  • 本文作者:下载幸福
  • 本文链接:https://simply.webkit.top/prodev/php-time-ago.html
  • 版权申明:除非特别说明,否则均为本站原创文章,转载或复制请注明出处。

推荐几个国内的前端静态资源CDN库(2023)

-

评 论