laravel api 文件中的双倍时间规范

Double time specification in file in laravel api

我正在 laravel 中创建 api,并从 $request->followup 中获取 2021-01-30T10:30:17.704 05:30,并且我在数据库中有一个名为 followup 的列,具有 datetime 数据类型。但它给了我以下错误。

Carbon\Exceptions\InvalidFormatException: Could not parse '2021-01-30T10:30:17.704 05:30': DateTime::__construct(): Failed to parse time string (2021-01-30T10:30:17.704 05:30) at position 24 (0): Double time specification in file D:\xampp2\htdocs\synocrm-baid\rest-apis\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php on line 188

我试过像这样更改格式

$followupDate = date('Y-m-d h:i:s A',strtotime($request->followup));

我的模态

@property Carbon|null $followup

2021-01-30T10:30:17.704 05:30

似乎没有有效的时间戳。为了解析,它应该是有效的时间戳或日期。

$request->followup 正在将 datetime 附加到 datetime

原值:2021-01-30T10:30:17.704 05:30

日期时间:2021-01-30T10:30:17.704

时间:05:30

我们可以看到,有两个时间(05:30和10:30:17),因此strtotime()无法转换值。

为了解决问题,

  1. 只发送值作为时间时间(2021-01-30T10:30:17.704)而不是两次时间属性

  2. 如果您无法控制请求值,则只能检索日期值,例如:

    $dateValue = explode(' ', $request->followup)[0];
    
    $followupDate = date('Y-m-d h:i:s A',strtotime($dateValue));
    
    Or Using Carbon
    
    $followupDate = Carbon::parse($dateValue);
    

我不推荐选项 2,因为它会给其他开发者带来问题和困惑。