php时间日期格式化多种展示类型大全(刚刚、几分钟、几小时、昨天等)

php 2023-05-14 693次浏览

前言

前端时间在整理主题和项目时分享了PHP和JS两种格式化时间的方法,今天这个也是在整理过程中看到的一个优化方式,有3种时间格式化方法,1小时内的展示基本一样,主要是区分天级以上有一些微小的展示差别,项目中可能不同模块、页面或多项目共用一个插件时,展示有区分使用,有需要的拿走不谢!😄

代码示例

具体展示文案大家可以读代码看到,或者简单搞个demo传入查看即可

/**
 * 时间格式化多种格式
 * @param init $unixTime 要格式化的参数传入,格式为时间戳,这里没有做检查和强制转换
 * @param int $mode 格式化类型,3种方式选择传入
 * @return string $date_str 返回格式化后的字符串
 */
public static function date_format($unixTime, $mode = 1) {
    $passTime = time() - $unixTime;
    if($mode == 1){
        if ($passTime < 10) {
            $result = sprintf('%d秒', $passTime);
        } elseif ($passTime < 60) {
            $result = $passTime.'秒前';
        } elseif ($passTime < 3600) {
            $result = ((int)($passTime / 60)) . '分钟前';
        } elseif (date('Ymd') == date('Ymd', $unixTime)) {
            $result = date('今天H:M', $unixTime);
        } elseif (date('Y') == date('Y', $unixTime)) {
            $result = date('m月d日', $unixTime);
        } else {
            $format = date('Y') != date('Y', $unixTime) ? "Y-m-d H:i" : "m-d H:i";
            $result = date($format, $unixTime);
        }
        return $result;
    }elseif ($mode == 2){
        if ($passTime == 0) {
            $result = '刚刚';
        } elseif ($passTime < 60) {
            $result = $passTime.'秒前';
        } elseif ($passTime < 3600) {
            $result = ((int)($passTime / 60)) . '分钟前';
        } elseif ($passTime < 3600 * 12) {
            $result = ((int)($passTime / 3600)) . '小时前';
        } else {
            $format = date('Y') != date('Y', $unixTime) ? "Y-m-d H:i" : "m-d H:i";
            $result = date($format, $unixTime);
        }
        return $result;
    }else{
        $today = strtotime(date('Y-m-d 00:00:00'));
        $yesterday = $today - 86400;
        if ($passTime == 0) {
            $result = '刚刚';
        } elseif ($passTime < 60) {
            $result = $passTime.'秒前';
        } elseif ($passTime < 3600) {
            $result = ((int)($passTime / 60)) . '分钟前';
        } elseif ($passTime < 3600 * 12) {
            $result = ((int)($passTime / 3600)) . '小时前';
        } elseif($unixTime < $today and $unixTime >= $yesterday) {
            $result = date('昨天H:i', $unixTime);
        }elseif(date('Y') == date('Y',$unixTime)){
            $result = date('m-d', $unixTime);
        }else{
            $result = date('Y-m-d', $unixTime);
        }
        return $result;
    }
}

php时间日期格式化多种展示类型大全(刚刚、几分钟、几小时、昨天等)

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

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

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