php date()函数使用需牢记三点:只处理整数时间戳、格式字母大小写敏感、默认用本地时区;传参前须用strtotime()或gettimestamp()转整数,格式用y-m-d h:i:s,时区建议显式设置。

用 PHP 的 date() 函数格式化时间,关键不是记全所有字母,而是理解它只处理时间戳、必须传整数、且默认用本地时区——这三个点踩错一个就容易出错。
确保传进去的是合法时间戳
date() 第二个参数必须是整数类型的时间戳(从 1970-01-01 开始的秒数)。新手常直接传字符串如 "2024-05-20" 或对象,结果返回 false 或错误日期。
- 从字符串转时间戳:用
strtotime("2024-05-20 14:30"),它会返回整数;失败时返回false,记得判断 - 从 DateTime 对象获取时间戳:用
$dt->getTimestamp(),别直接传对象 - 当前时间直接用
time(),最安全
格式字符大小写敏感,常用组合要记牢
小写字母和大写字母代表不同含义,比如 h(12 小时制)、H(24 小时制),m(分钟)、M(英文月份缩写)——写混就会显示成“May”而不是“05”。
- 年月日:用
Y-m-d(如2024-05-20),Y是 4 位年份,y是 2 位;m补零月,n不补零 - 时分秒:
H:i:s最常用(14:30:45),i是分钟(不是m,那个是月份) - 中文星期/月份:
date()本身不支持,得用strftime()或 DateTime::format() 配合 setlocale
注意时区,默认用系统本地时区
没设置时区时,date() 按服务器配置走,可能和你预期差 8 小时。开发时建议统一用 UTC 或显式设定。
- 临时改:调用前加
date_default_timezone_set('Asia/Shanghai'); - 推荐方式:用
DateTime类,更可控,比如(new DateTime('now', new DateTimeZone('Asia/Shanghai')))->format('Y-m-d H:i:s') - 检查当前时区:
date_default_timezone_get(),避免靠猜
调试技巧:先 echo 时间戳,再 format
输出前多一步验证,能快速定位问题。
- 打印时间戳:
var_dump(strtotime($input));看是不是 int 或 false - 测试格式串:
echo date('Y-m-d H:i:s', time());先确认基础是否正常 - 遇到空输出或 1970 年:基本是时间戳为 0 或 false,回溯源头查字符串解析是否失败
不复杂但容易忽略。把时间戳来源、格式字母大小写、时区三件事理清楚,date() 就很少翻车。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











