主题自带了很多个函数,当前函数是时间格式化函数,专门把数据库标准时间 YYYY-MM-DD HH:MM:SS 转换成用户易读的中文人性化时间。比如把 2025-05-20 14:30:00 变成 今天 14:30、昨天 14:30、周一 14:30 这种聊天软件常见的时间格式。
函数返回时间格式(按优先级从近到远)
| 时间范围 |
返回格式示例 |
说明 |
| 4 分钟内(<240 秒) |
刚刚 |
极短时间 |
| 1 小时内(<3600 秒) |
8 分钟前 |
动态计算分钟数 |
| 当天内 |
今天 14:30 |
24 小时制时分 |
| 昨天 |
昨天 14:30 |
固定文字 + 时间 |
| 前天 |
前天 14:30 |
固定文字 + 时间 |
| 3~5 天前 |
周一 14:30 |
星期 + 时间 |
| 同年(非以上情况) |
05-20 14:30 |
月 – 日 时分 |
| 去年 |
去年 05-20 14:30 |
文字 + 月日时分 |
| 前年 |
前年 05-20 14:30 |
文字 + 月日时分 |
最终输出一定是字符串,不会返回时间戳 / 对象。
函数执行逻辑(流程图式讲解)
- 验证传入时间是否合法,不合法直接返回原字符串
- 把目标时间和当前时间转成
DateTime 对象(PHP 标准时间类)
- 计算时间差(秒、天)
- 从近到远逐级判断,匹配哪条就返回哪条格式
- 都不匹配则返回完整标准时间
使用注意事项(非常重要!)
- 当前时区是Asia/Shanghai
- 传入参数必须是标准格式
YYYY-MM-DD HH:MM:SS
如果传入:
函数会直接返回原字符串,不做格式化。
时间计算基于服务器时间,不是客户端时间,所有判断用的是服务器当前时间,如果用户设备时间不准,不影响显示,适合聊天、私信、评论等场景。使用的时候直接使用
mi_format_private_time($data)
即可格式化当前时间。