在 PHP 开发中,时间处理是最常用、也最容易踩坑的功能 —— 时区不对、时间错乱、数据库时间不匹配、前端展示格式不对,几乎每个项目都会遇到。
这篇文章专门讲PHP 如何正确修改、设置、转换时间,从零教你,全是实战代码,复制就能用。
参考:https://app-ad5zuq3x5q0x.appmiaoda.com/tag/tea-identification.html
一、先解决最关键问题:PHP 时区不对
很多时候 “时间不对”,不是代码错了,是时区没设置。
1. 页面内临时设置时区(推荐)
php运行
// 设置为中国时区 date_default_timezone_set('Asia/Shanghai');
2. 永久设置 php.ini
plaintext
date.timezone = Asia/Shanghai
改完重启服务器即可。
只要时区对了,80% 的时间问题直接解决。
参考:https://app-ad5zuq3x5q0x.appmiaoda.com/category/black-tea.html
二、PHP 获取当前时间(最基础)
php运行
date_default_timezone_set('Asia/Shanghai'); // 获取当前日期时间 echo date('Y-m-d H:i:s'); // 获取当前时间戳 echo time();
三、PHP 修改时间:往前 / 往后推 N 天 / 小时 / 分钟
这是项目里最常用的 “修改时间” 需求,直接给你万能写法:
1. 往后推 1 天
php运行
echo date('Y-m-d H:i:s', strtotime('+1 day'));
2. 往前推 3 天
php运行
echo date('Y-m-d H:i:s', strtotime('-3 days'));
3. 推 1 小时
php运行
echo date('Y-m-d H:i:s', strtotime('+1 hour'));
4. 推 30 分钟
php运行
echo date('Y-m-d H:i:s', strtotime('+30 minutes'));
5. 推 1 个月
php运行
echo date('Y-m-d H:i:s', strtotime('+1 month'));
strtotime () 就是 PHP 修改时间的神器,支持:
- day / days
- hour / hours
- minute / minutes
- month / months
- year / years
四、任意时间戳修改时间
如果你不是改当前时间,而是改某个指定时间:
php运行
// 原时间 $old_time = '2026-03-20 12:00:00'; $timestamp = strtotime($old_time); // 修改:加2天 $new_time = date('Y-m-d H:i:s', strtotime('+2 days', $timestamp)); echo $new_time;
五、时间格式互相转换(最实用)
1. 字符串时间 → 时间戳
php运行
$time_str = '2026-03-20 10:30:00'; echo strtotime($time_str);
2. 时间戳 → 正常日期
php运行
$timestamp = 1742432400; echo date('Y-m-d H:i:s', $timestamp);
六、常用时间格式速查(直接复制)
plaintext
Y-m-d → 2026-03-20 Y/m/d → 2026/03/20 Y-m-d H:i:s → 2026-03-20 12:30:45 H:i:s → 12:30:45
七、新手最容易犯的 3 个错误
- 没设置时区 → 时间差 8 小时
- 用错 strtotime 符号 + 是往后,- 是往前
- 数据库存字符串时间 → 建议存时间戳,方便修改计算
八、总结(一句话记住)
- PHP 修改时间靠 strtotime()
- 时区必须设 Asia/Shanghai
- 加减时间直接写:
+1 day、-2 hours、+3 months - 时间戳和日期互转是日常操作
这篇足够你搞定99% 的 PHP 时间修改场景,不管是做网站、后台、小程序接口,都能直接用。