
本文介绍如何使用 PHP 的 strtotime() 和 date() 函数,将类似 "Thu, Jun 9, 2022" 的英文日期字符串安全、准确地转换为标准的 Y-m-d 格式(如 2022-06-09)。
本文介绍如何使用 php 的 `strtotime()` 和 `date()` 函数,将类似 "thu, jun 9, 2022" 的英文日期字符串安全、准确地转换为标准的 `y-m-d` 格式(如 `2022-06-09`)。
在使用 SimpleHTMLDOM 等库解析 HTML 页面时,常会提取到自然语言风格的日期文本(如 "Thu, Jun 9, 2022"),这类字符串无法直接用于数据库存储或时间计算。PHP 提供了简洁高效的解决方案:结合 strtotime() 解析日期语义,再用 date() 格式化输出。
基础用法示例
$rawDate = 'Thu, Jun 9, 2022';
$formattedDate = date('Y-m-d', strtotime($rawDate));
echo $formattedDate; // 输出:2022-06-09
strtotime() 能自动识别多种常见英文日期格式(含缩写星期、月份、逗号分隔等),并返回 Unix 时间戳;date() 则将其按指定格式(Y 表示 4 位年份,m 表示补零月,d 表示补零日)转为字符串。
注意事项与最佳实践
- ✅ 验证解析结果:strtotime() 在失败时返回 false,需校验避免意外输出 1970-01-01:
$timestamp = strtotime($rawDate); if ($timestamp === false) { throw new InvalidArgumentException("无法解析日期: {$rawDate}"); } $formattedDate = date('Y-m-d', $timestamp); - ✅ 时区敏感:strtotime() 默认使用服务器本地时区。如需统一处理(如 UTC),建议显式设置:
date_default_timezone_set('UTC'); - ⚠️ 避免依赖模糊格式:对于非标准格式(如 "9th Jun 2022" 或 "Jun 9th, 2022"),strtotime() 可能解析失败,此时应考虑使用 DateTime::createFromFormat() 进行精确匹配。
总结
对于 SimpleHTMLDOM 提取的常规英文日期(如 "Mon, Jan 1, 2024" 或 "Fri, Dec 25, 2023"),date('Y-m-d', strtotime($str)) 是最简、最可靠的转换方式。务必加入错误检查,并在多时区场景中明确时区配置,以确保数据一致性与可维护性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











