PHP时间戳与日期转换及人性化显示实战

认真发呆
认真发呆
发布时间:2026-10-14 | 3人浏览过
原创

在 PHP 开发中,准确处理时间与日期是常见需求。本文详细讲解如何使用 strtotime 和 date 函数进行时间戳与字符串的相互转换,展示如何获取特定时间点(如今日零点),并提供一个完整的自定义函数,用于将时间戳转换为“刚刚”、“X分钟前”等符合用户习惯的人性化显示格式,最后说明日期格式化中月份和日期的补零规则。

核心函数:时间戳与字符串转换基础

PHP 主要使用 strtotime() 将人类可读的时间描述转换为 Unix 时间戳,使用 date() 将时间戳格式化为字符串。

第1步:基本转换操作

目的:掌握时间与时间戳的双向转换。
动作:
1. 使用 strtotime("today") 获取当前日期开始时刻(通常为当天 00:00:00)的时间戳。
2. 使用 date("Y-m-d H:i", $unixtime) 将整数时间戳转换为易读的日期时间字符串,格式为“年-月-日 时:分”。

高级应用:人性化时间差显示

在社交网络或新闻列表中,直接显示具体时间往往不如显示相对时间(如“3小时前”)直观。以下函数实现了基于当前时间与目标时间差的动态显示逻辑。

第2步:实现自定义时间转换函数 transTime

入口:传入一个 Unix 时间戳 $ustime。
逻辑:
1. 定义备用格式:分别准备三种不同精度的日期字符串,以备后续选择:
- 完整日期:$ytime = date("Y-m-d H:i", $ustime);
- 简洁日期:$rtime = date("n月j日 H:i", $ustime);
- 仅时间:$htime = date("H:i", $ustime);
2. 计算时间差:
- $time = time() - $ustime; 计算当前时间与目标时间的秒数差。
- $todaytime = strtotime("today"); 获取今日零点时间戳。
- $time1 = time() - $todaytime; 计算距离今日零点的总秒数(即今天已过去的时间)。
3. 条件判断与返回:
- 如果 $time < 60:显示为 "刚刚"。
- 如果 $time < 60 * 60(小于1小时):计算分钟数 floor($time/60),显示为 "X分钟前"。
- 如果 $time < $time1(在今天内但超过1小时):显示为 "今天 X:X"(取自 $htime)。
- 否则(昨天及更早):显示为 "M月D日 H:i"(取自 $rtime)。

function transTime($ustime) {
    $ytime = date("Y-m-d H:i",$ustime);
    $rtime = date("n月j日 H:i",$ustime);
    $htime = date("H:i",$ustime);
    
    // 计算当前时间与目标时间的差值
    $time = time() - $ustime;
    
    // 计算今天已过去的秒数,用于区分“今天”与“昨天”
    $todaytime = strtotime("today");
    $time1 = time() - $todaytime;
    
    if($time < 60) {
        $str = '刚刚';
    } else if($time < 60 * 60) {
        $min = floor($time/60);
        $str = $min.'分钟前';
    } else if($time < $time1) {
        // 发生在今天,但超过1小时前
        $str = '今天 '.$htime;
    } else {
        // 昨天或以前的日期
        $str = $rtime;
    }
    
    return $str;
}

该函数提供了基础的相对时间显示框架。可根据业务需求扩展更细致的判断,例如添加“前天”、“XX秒前”或“XX天前”的判断逻辑。

日期格式化细节:补零规则

在使用 date()

  • 补零格式:使用大写 m 和 d。例如 echo date('Y-m-d'); 会输出 2012-08-08,不足两位的数字前面会自动补 0。
  • 不补零格式:使用小写 n 和 j。例如 echo date('Y-n-j'); 会输出 2012-8-8,数字保持原始位数。

以上就是PHP时间戳与日期转换、时间差显示及格式化规则的详细内容,更多关于PHP开发实用技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表