【问题标题】:The separation symbol could not be found Unexpected data found. Trailing data Carbon Laravel找不到分隔符号 发现意外数据。尾随数据 Carbon Laravel
【发布时间】:2020-09-14 12:08:34
【问题描述】:

我在我的 laravel 项目中使用碳。我尝试更改以下日期格式。我找不到任何错误,但它显示找不到分隔符号。 我就是这样做的

$employees = $request->get('employeeIds');
    $inTimes = $request->get('inTime');
    $outTimes = $request->get('outTime');

    $attendance_date = Carbon::createFromFormat('d/m/Y', $request->get('attendance_date'))->format('Y-m-d');

    //fetch employee working hours
    $workTimes = Employee::where('status', AppHelper::ACTIVE)->get()->reduce(function ($workTimes, $employee) use ($request) {
        $workTimes[$employee->id] = [
            'in_time' => null,
            'out_time' => null
        ];
        if ($employee->duty_start) {
            $workTimes[$employee->id]['in_time'] = Carbon::createFromFormat('d/m/Y H:i:s', $request->get('attendance_date') . ' ' . $employee->getOriginal('duty_start'));
        }

        if ($employee->duty_end) {
            $workTimes[$employee->id]['out_time'] = Carbon::createFromFormat('d/m/Y H:i:s', $request->get('attendance_date') . ' ' . $employee->getOriginal('duty_end'));
        }

        return $workTimes;
    });

【问题讨论】:

  • 当心,您验证的解决方案适用于 m/d/Y,而不适用于 d/m/Y,请准确:哪一行抛出错误并提供我们无法猜测的静态数据样本$request的内容

标签: php laravel php-carbon


【解决方案1】:

您可以使用 strtotime 函数解决此问题:

$attendance_date = Carbon::createFromTimestamp(strtotime($request->get('attendance_date')) )->format('Y-m-d');

//fetch employee working hours
$workTimes = Employee::where('status', AppHelper::ACTIVE)->get()->reduce(function ($workTimes, $employee) use ($request) {
    $workTimes[$employee->id] = [
        'in_time' => null,
        'out_time' => null
    ];
    if ($employee->duty_start) {
        $workTimes[$employee->id]['in_time'] = Carbon::createFromTimestamp(strtotime($request->get('attendance_date') . ' ' . $employee->getOriginal('duty_start')) );
    }

    if ($employee->duty_end) {
        $workTimes[$employee->id]['out_time'] = Carbon::createFromTimestamp(strtotime($request->get('attendance_date') . ' ' . $employee->getOriginal('duty_end')) );
    }

    return $workTimes;
});

【讨论】:

  • Carbon::createFromTimestamp(strtotime()) 等价于Carbon::parse()
  • 但这不适用于您的格式 d/m/Y,因为 Carbon::createFromTimestamp(strtotime('02/03/2020')) 给您的是 2 月 3 日,而不是 3 月 2 日。
猜你喜欢
  • 2014-08-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
相关资源
最近更新 更多