PHP-时间格式化显示(刚刚、几分钟前、几小时前、昨天等)

php 2023-04-29 653次浏览

PHP-时间日期格式化后展示

相信很多小伙伴在平常上网的时候,经常会在一些网站和APP上看到文章日期处显示:刚刚、几分钟前、几小时前,昨天 12:00、前天 13:30 等时间展现方式,不得不说这样的展现方式粘在用户体验的角度上来看,还是非常舒适的。

相比直接显示生硬的年月日及时间点的,反而让人陷入了时间计算的一个盲区,对于微博、评论及新闻资讯类的文章列表,直接显示日期的方式展现体验显然有些格格不入了。

下面就让我们一起来看下时间格式化的实现方式吧

<?php

/**
 * 文章时间格式化
 * @param   int|string  $time   时间戳|日期
 * @param   bool        $isYear 是否显示年份
 * @return  string
 */
function formatTime($time, $isYear = false) {
    if(!$time) {
        return '';
    }
    if (!is_numeric($time)) {
        $time_new       = strtotime($time);
        if (!$time_new) {
            return $time;
        } else {
            $time       = $time_new;
        }
    }

    $now                = time();

    if(($dur = $now - $time) <= 600) {
        $time           = '刚刚';
    } elseif (date('Ymd', $now) == date('Ymd', $time)) {
        if(($dur = $now - $time) < 3600) {
            $temp       = floor($dur/60);
            if($temp == 60) {
                $time   = '1小时前';
            } else {
                $time   = $temp . '分钟前';
            }
        } else {
            $time       = floor($dur/3600) . '小时前';
        }
    } else {
        if(date('Ymd',strtotime('-1 day')) == date('Ymd', $time)) {
            $time       = sprintf('昨天 %s:%s', date('H', $time), date('i', $time));
        } else {
            if ($isYear && date('Y') > date('Y', $time)) {
                $time       = date('y-n-j', $time);
            } else {
                $time       = sprintf('%s-%s', date('n', $time), date('j', $time));
            }
        }
    }

    return $time;
}

# 执行效果如下:
echo formatTime(time()); // 刚刚

echo formatTime(1682659570);// 昨天 05:26

echo formatTIme("-3 day"); // 4-26

php时间日期格式化处理

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址