无法解析 DateTime::__construct()

cant parse DateTime::__construct()

我的 blade:

上有一个@foreach
@foreach
{{ $value-> StartDate}}
@endforeach

StartDate 当前显示为 'sept 2020 12:00:00AM' 我希望它被格式化为 'dd/mm/yy'/'d/m/y' 基本上像 23-09-2020 或 23/09/2020

我试过了

{{ $value->StartDate->format('d,m,y')}}

{{ Carbon\Carbon::parse($value->StartDate)->format('d,m,y') }}

并将 'd,m,y' 更改为 'dd,mm,yyyy' 等,但我可能会出错。我得到的主要错误是

Could not parse 'Sep 15 2020 12:00:00:AM': DateTime::__construct(): Failed to parse time string (Sep 15 2020 12:00:00:AM) at position 20 (:): Unexpected character

是否有更改格式的正确方法?

更新更详细:

我正在尝试更改一些日期在我的 blade 文件中的显示方式。它们来自 sql 数据库,因为 'Sep 16 2020 12:00:00:AM' 我希望它们显示为“16-09-2020” 下面是我所做的尝试,但是我仍然收到此错误

Unexpected data found. Unexpected data found. The separation symbol could not be found Trailing data

有没有人知道如何解决这个错误?

我的模特:

    class HomeModel extends Entity
{
    protected $dates = [
        'StartDate',
    ];

    public static function findBy(
        \DateTime $StartDate,
        \DateTime $EndDate
    ): array
    {
        $params = [
            $StartDate,
            $EndDate,

        ];
        return self::hydrate(DB::select('EXEC Table @StartDate = ?, @EndDate = ?',
            $params
        ));
    }
}

我的控制器:

   class Controller extends Controller
{
    public function __invoke(Request $request)
    {
        if (!$request->input('StartDate') && !$request->input('EndDate')) {
            $StartTime = Carbon::now()->subDays(8);
            $EndTime = Carbon::now();
        } else {
            $StartTime = Carbon::parse($request->input('StartDate'));
            $EndTime = Carbon::parse($request->input('EndDate'));
        }
        $data = HomeModel::findBy(
            Carbon::parse($StartTime),
            Carbon::parse($EndTime)
        );

        return view ('home', compact('data'));
    }

我的 blade :

    <tbody class="list">
                    @foreach($data as $value)
                        <tr>
                            <td class="end-time">
                                {{ \Carbon\Carbon::parse($value->StartDate)->format('d/m/Y')}}
                            </td>
                        </tr>
                    @endforeach
                </tbody>

我尝试了 的解决方案,但它 returns 是

的错误

DateTime::__construct() expects parameter 2 to be string, array given

这是预期的,因为我正在尝试从数组中获取日期。我将数组转换为字符串的尝试也是徒劳的。 有谁知道任何 php 用于格式化数组中日期的函数?

你能试试PHPcreateFromFormat函数吗?

<?php

$date='sept 2020 12:00:00AM';   //dd/mm/yy
$new= \DateTime::createFromFormat('M Y H:i:sA', $date )->format('d/m/Y'); 
echo $new;

或者您可以像下面这样解析日期。

\Carbon\Carbon::parse($date)->format('Y-m-d H:i');

勾选demo

我找到了一个非常简单的解决方案。我的代码没有问题,但我在哪里 运行 它。

{{ Carbon\Carbon::parse($value->StartDate)->format('d-m-Y') }}

在 blade 中效果很好,而且格式正确。我遇到的问题是我没有使用 laradock,这就是为什么我收到

错误的原因

Could not parse 'Sep 15 2020 12:00:00:AM': DateTime::__construct(): Failed to parse time string (Sep 15 2020 12:00:00:AM) at position 20 (:): Unexpected character

在终端中 运行 docker-compose up 之后,我不再收到错误并且日期格式正确。 我的结论是,如果您偶然发现此错误,请检查您的开发区域。