登录
首页 >  文章 >  php教程

PHP日期格式化方法详解

时间:2026-03-04 16:36:46 478浏览 收藏

本文深入解析了PHP中日期格式化的两大核心方案——简洁高效的`date()`配合`strtotime()`适用于常见字符串的快速转换,而功能强大、健壮可靠的`DateTime`类则专为时区处理、自定义格式解析及复杂日期运算而生;同时强调避开已废弃且不稳定的`strftime()`,厘清大小写敏感的格式符陷阱,并一针见血指出:真正决定日期处理成败的关键,往往不是函数选择,而是源头输入的规范性与一致性——从数据库字段类型、API数据标准到前端控件输出,统一采用ISO 8601等可靠格式,才是避免“时间bug”的根本之道。

PHP怎么格式化日期_PHP日期格式转换方法【指南】

PHP 里格式化日期最可靠、最常用的方式是 date() 配合 strtotime()DateTime 类 —— 别用 strftime(),它在 PHP 8.1+ 已废弃,且区域设置(locale)行为不稳定。

date() + strtotime() 快速转换常见字符串

适合处理形如 "2023-10-05""2023/10/05 14:30:00""next Monday" 这类可被 PHP 自动识别的字符串。

  • strtotime() 把字符串转为时间戳(int),失败时返回 false,务必检查
  • date() 只接受时间戳,不接受字符串或对象,传错会静默输出空字符串
  • 示例:date('Y-m-d H:i:s', strtotime('2023-12-25'))"2023-12-25 00:00:00"
  • 错误写法:date('Y-m-d', '2023-12-25') —— 第二个参数不是时间戳,结果不可靠

DateTime 类处理复杂时区和格式需求

当涉及时区转换、加减日期、解析非标准格式(如 "05/Dec/2023:14:30:00 +0800")或需要链式调用时,DateTime 是唯一健壮选择。

  • 构造失败会抛出 Exception,比 strtotime()false 更易定位问题
  • 时区必须显式指定:new DateTime('now', new DateTimeZone('Asia/Shanghai'))
  • 解析自定义格式用 DateTime::createFromFormat(),注意格式字符严格对应('d/m/Y' 不能匹配 '2023/12/05'
  • 示例:DateTime::createFromFormat('d-M-Y', '05/Dec/2023')->format('Y-m-d')"2023-12-05"

避免 date() 格式符常见误写

大小写敏感、语义易混淆,写错会导致格式完全不对,但 PHP 不报错。

  • 'y' 是两位年份(23),'Y' 是四位(2023
  • 'm' 是补零月(01),'n' 是无前导零(1
  • 'h' 是 12 小时制(0112),'H' 是 24 小时制(0023
  • 'i' 是分钟,'s' 是秒,'S' 是英文序数后缀(stnd),别混用
  • 中文输出?别硬套 date() —— 它不支持 locale,要用 strftime()(已废弃)或 IntlDateFormatter

真正麻烦的从来不是“怎么转”,而是“谁来保证输入字符串格式稳定”——数据库字段类型用 DATETIME、API 传参强制 ISO 8601(2023-12-05T14:30:00+08:00)、前端 DatePicker 输出格式统一,这些比选哪个函数重要得多。

终于介绍完啦!小伙伴们,这篇关于《PHP日期格式化方法详解》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>