PHP date函数实用指南:格式化与常见坑

2026-11-02 0 9

date() 的基本用法

date() 把时间戳格式化为可读字符串,第二个参数省略时使用当前时间:

echo date(‘Y-m-d H:i:s’); // 2024-05-20 14:30:00

echo date(‘Y-m-d’, 1700000000); // 指定时间戳

第一个参数是格式字符串,只有格式字符会被替换,其余字符原样输出;但遇到有特殊含义的字母(如 t、a、e)需要转义,用反斜杠:

echo date(‘Y年m月d日 l’); // l 被替换为星期

echo date(‘\\t\\o\\d\\a\\y’); // 输出字面量 today

常用格式字符速查

  • Y 四位年份,y 两位年份
  • m 两位月份(01–12),n 不补零(1–12)
  • d 两位日期,j 不补零
  • H 24 小时制,h 12 小时制,i 分钟,s 秒
  • w 星期数字(0 为周日),N ISO 星期(1 为周一)
  • t 当月天数,L 是否闰年
  • U Unix 时间戳

选择补零还是非补零,直接影响输出是否符合前端或数据库的预期,例如 2024-5-1 与 2024-05-01 在排序和比较时行为不同。

时间戳与 strtotime

strtotime() 把日期字符串转为时间戳,两者常配合使用:

$ts = strtotime(‘2024-05-20 14:30:00’);

echo date(‘Y/m/d’, $ts);

echo date(‘Y-m-d’, strtotime(‘+7 days’)); // 一周后

echo date(‘Y-m-d’, strtotime(‘last day of this month’));

strtotime() 对无法解析的字符串返回 false,直接传给 date() 会被当作 0,输出 1970 年。稳妥做法是先判断:

$ts = strtotime($input);

if ($ts === false) {

// 处理解析失败

}

时区:最容易踩的坑

date() 使用 PHP 配置的默认时区。若 php.ini 未设置 date.timezone,PHP 会给出警告并使用 UTC,导致输出与本地时间相差数小时。推荐在项目入口显式设置:

datedefaulttimezone_set(‘Asia/Shanghai’);

需要处理多时区时,用 DateTime 与 DateTimeZone 更清晰,也避免全局状态被意外修改:

$dt = new DateTime(‘now’, new DateTimeZone(‘Asia/Shanghai’));

echo $dt->format(‘Y-m-d H:i:s’);

几个实用细节

大小写敏感。 M 是英文月份缩写(May),F 是完整月份(May),D 是星期缩写,A 是 AM/PM,a 是 am/pm。写错大小写常导致输出不符合预期。

不要用 date() 做日期运算。 月末加减、跨年计算用 DateTime::modify() 或 strtotime() 更可靠,手动拼时间戳容易在闰年和月末出错。

区分格式化与解析。 date() 只负责输出,解析输入日期应使用 DateTime::createFromFormat(),它能严格校验格式并返回 false 表示失败,比 strtotime() 宽松解析更适合处理用户输入。

小结

掌握 date() 的关键在于记牢格式字符、显式设置时区、并养成校验 strtotime() 返回值的习惯。复杂场景优先使用 DateTime 系列类,代码的可读性和正确性都会更好。

看过这篇文章的人,推荐看以下内容

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

版权声明:所有的源码、软件和资料,不得使用于非法商业用途,不得违反国家法律,一切关于该资源商业行为与本站无关。

免费cms模板 建站百科 PHP date函数实用指南:格式化与常见坑 https://www.mianfeicms.com/12314.html

我是签名

下一篇:

已经没有下一篇了!

相关文章

猜你喜欢
发表评论
暂无评论