You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Maatwebsite导入Excel文本日期时Carbon解析失败报错

Laravel Maatwebsite Excel导入文本日期报错解决方案

报错原因

你遇到的错误提示如下:

Could not parse '13/06/2021 19:00': DateTime::__construct(): Failed to parse time string (13/06/2021 19:00) at position 0 (1): Unexpected character

触发错误的核心原因有两个:

  • Carbon默认对/分隔的日期字符串采用月/日/年的美式格式解析,你使用的日期是日/月/年的欧式格式,当日期中的日数值大于12时,Carbon会将其识别为无效月份直接抛出异常,所谓的“随机停止”只是刚好遇到了日>12的日期行。
  • 你之前尝试调用Carbon::createFromFormat($row[7])报错,是因为该方法要求第一个参数必须传入明确的日期格式规则,仅传日期值属于参数调用错误。

修复方案

直接通过createFromFormat明确指定日期格式即可,可额外加字符串清理和异常兼容逻辑,避免脏数据导致整个导入任务中断。

基础修复代码

public function model(array $row)
{
    // 先清除日期字符串中的不可见空格、特殊字符
    $pickupRaw = trim($row[7]);
    $dropRaw = trim($row[8]);

    // 明确指定格式为 日/月/年 时:分
    $pickup_date = Carbon::createFromFormat('d/m/Y H:i', $pickupRaw);
    $drop_date = Carbon::createFromFormat('d/m/Y H:i', $dropRaw);

    return new Driveme([
        'targa' => $row[14],
        'modello' => $row[13],
        'driver' => $row[10],
        'pickup_date' => $pickup_date,
        'drop_date' => $drop_date,
    ]);
}

兼容异常行的优化代码

如果允许跳过格式异常的行、不中断整个导入流程,可以加异常捕获处理:

public function model(array $row)
{
    try {
        $pickupRaw = trim($row[7]);
        $dropRaw = trim($row[8]);
        $pickup_date = Carbon::createFromFormat('d/m/Y H:i', $pickupRaw);
        $drop_date = Carbon::createFromFormat('d/m/Y H:i', $dropRaw);
    } catch (\Carbon\Exceptions\InvalidFormatException $e) {
        // 记录异常行日志方便后续排查
        \Log::error('日期解析失败', ['行数据' => $row, '错误信息' => $e->getMessage()]);
        // Maatwebsite Excel中返回null会自动跳过当前行
        return null;
    }

    return new Driveme([
        'targa' => $row[14],
        'modello' => $row[13],
        'driver' => $row[10],
        'pickup_date' => $pickup_date,
        'drop_date' => $drop_date,
    ]);
}

补充说明

如果仍有解析失败的情况,可先将原始$row[7]、$row[8]写入日志,确认是否存在隐形字符、分隔符不一致、或者缺少年/月/时间部分的异常数据。

内容的提问来源于stack exchange,提问作者Marco Bozzola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 15:36:06