laravel api中文件中的双时间规范
我在laravel制作api,从laravel api中文件中的双时间规范,laravel,php-carbon,Laravel,Php Carbon,我在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 st
$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),因此strotime()
无法转换该值
为了解决这个问题,
$dateValue = explode(' ', $request->followup)[0];
$followupDate = date('Y-m-d h:i:s A',strtotime($dateValue));
Or Using Carbon
$followupDate = Carbon::parse($dateValue);
我不推荐选项2,因为它会给其他开发人员带来问题和混乱。我尝试了第二个选项,但仍然面临相同的问题您是否可以粘贴$dateValue$dateValue的值返回2021-01-30T10:30:17.704相同的值对我有效。请再试一次。为了方便起见,我还添加了碳选项。为我工作时,我将值分配到$request->followup而不是followupdate中,这样就可以了。如果5:30是一个时区,听起来+已经被URL解码了:你应该有2021-01-30T10:30:17.704+05:30,并且应该对该值进行编码,这样你就不会丢失URL+