PHP如何正确读取Excel中dd/mm/yy格式的日期数据?
问题原因
strtotime 函数默认将斜杠/分隔的日期识别为美式mm/dd/yy格式,你传入的是欧式dd/mm/yy格式,当日期中的日数值大于12时,strtotime会判定为无效日期返回false,后续date函数接收无效时间戳就会输出错误结果。
解决方案
方案1(推荐):使用DateTime类明确指定输入格式
通过createFromFormat方法显式声明输入的日期格式为d/m/y,解析准确率最高,边界情况处理更稳定:
// 明确指定输入格式为 日/月/两位年 $dateObj = DateTime::createFromFormat('d/m/y', trim($row[1])); if ($dateObj) { // 按需求输出格式,示例为日-月-四位年 $date = $dateObj->format('d-m-Y'); // 如需年-月-日格式修改format参数即可:$date = $dateObj->format('Y-m-d'); } else { // 可自定义格式不匹配时的兜底逻辑 $date = null; }
方案2:替换分隔符适配strtotime识别规则
strtotime识别横杠-分隔的日期为欧式dd-mm-yy格式,可先把斜杠替换为横杠再解析:
$processedDateStr = str_replace('/', '-', trim($row[1])); $timestamp = strtotime($processedDateStr); if ($timestamp !== false) { $date = date('d-m-Y', $timestamp); }
额外提示
如果你是通过PhpSpreadsheet/PHPExcel这类专用库读取Excel文件,可直接调用库内置的日期转换方法,无需手动解析字符串,避免格式匹配错误。
内容的提问来源于stack exchange,提问作者xxx
相关产品推荐
相关产品推荐

