php的strtotime在处理am/pm时的一个BUG
这篇讲的是PHP中`strtotime`函数在处理包含am/pm格式时间字符串时可能存在的一个隐蔽BUG。作者从实际的数据采集问题出发——发现采集到的时间字段意外为空,但检查源网站明明有正常的时间显示。结合之前遇到过的am/pm相关问题,他开始针对性地测试`strtotime`函数。 经过一系列代码测试,文章揭示了一个关键点:当时间字符串中同时包含不规范的日期部分(如“Feb 14th, 2025 2:30 pm”)和am/pm指示符时,`strtotime`可能无法正确解析,从而返回`false`,最终导致时间数据丢失。这对于依赖该函数处理多格式时间数据的程序(尤其是爬虫或数据清洗流程)是一个容易忽略的陷阱。 文章通过具体的测试代码和对比,直观展示了问题的复现过程,提醒开发者在处理来自外部不可控的时间格式时,不能完全依赖`strtotime`的“智能”解析,或许需要更严格的预处理或校验机制。