«

PHP日期时间格式化date与strtotime用法

时间:2026-11-14 07:19     作者:emer     分类: PHP


前言

PHP 处理时间最常用 date 格式化和 strtotime 解析相对时间,很多 Bug 来自时区未设置、时间戳单位混淆。本文讲解 date 常用格式、strtotime 解析昨天/下周/相对时间、时区设置、时间戳运算,覆盖日常开发高频场景。

操作步骤

1. 设置时区

date_default_timezone_set('Asia/Shanghai');

2. 当前时间格式化

echo date('Y-m-d H:i:s');

常用字母:Y 年、m 月、d 日、H 时、i 分、s 秒、A 上午下午。

3. 时间戳转格式化

echo date('Y-m-d H:i:s', 1731500000);

4. strtotime 解析相对时间

echo date('Y-m-d', strtotime('yesterday'));
echo date('Y-m-d', strtotime('+1 week'));
echo date('Y-m-d', strtotime('next Monday'));

5. 格式化自定义日期字符串

$ts = strtotime('2026-11-14 10:00:00');
echo date('Y/m/d', $ts);

6. 计算两个日期差

$diff = strtotime('2026-12-01') - strtotime('2026-11-14');
echo floor($diff/86400).' 天';

常见坑

  1. 没设时区,返回 UTC 时间,和业务差 8 小时。
  2. 时间戳单位:PHP 是秒,JS 常是毫秒,别混用。
  3. strtotime 解析非法字符串返回 false,要做空判断。
  4. 2038 问题对 32 位系统远期时间戳溢出。
  5. date 格式字母用错(m 月 vs n 无补零),输出不符。
  6. 夏令时地区相对时间偏移,国内一般无影响。
  7. 数据库 datetime 与时间戳转换注意格式。

总结

date 负责格式化、strtotime 负责解析相对时间,开头先设 Asia/Shanghai 时区。注意时间戳是秒、解析失败返回 false、日期差按 86400 换算。复杂日期计算可考虑 DateTime 类,可读性更好。

遇到问题加QQ23979811 协助处理

标签: PHP 时间 date strtotime