问题描述
我的刀片上有一个@foreach:
@foreach
{{ $value-> StartDate}}
@endforeach
StartDate当前显示为“ 2020年9月12:00:00 AM” 我希望将其格式设置为“ 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,y') }}
,也将“ d,m,y”更改为“ dd,mm,yyyy”等,但我可能会出错。我得到的主要错误是
无法解析'Sep 15 2020 12:00:00:AM':DateTime :: __ construct(): 无法解析位置20的时间字符串(Sep 15 2020 12:00:00:AM) (:):意外字符
是否有适当的方式来更改格式?
更详细的更新:
我正在尝试更改某些日期在我的刀片文件中的显示方式。它们来自sql数据库,显示为“ Sep 16 2020 12:00:00:AM”,我希望它们显示为“ 16-09-2020”。下面是我所做的尝试,但是仍然出现此错误>
发现意外数据。找到意外的数据。找不到分隔符号尾随数据
我的模特:
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'));
}
我的刀片:
<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>
DateTime :: __ construct()期望参数2为字符串,给定数组
这是预期的,因为我正试图从数组中获取日期。我把数组变成字符串的尝试也是徒劳的。 有人知道用于格式化数组中日期的任何PHP函数吗?
解决方法
您可以尝试使用PHP createFromFormat
函数吗?
<?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') }}
在刀片中效果很好,并将正确格式化。我遇到的问题是我没有在laradock上工作,这就是为什么我得到错误消息
无法解析'Sep 15 2020 12:00:00:AM':DateTime :: __ construct():无法解析位置20(:)上的时间字符串(Sep 15 2020 12:00:00:AM):意外字符
在终端中运行docker-compose up
后,我停止出现错误,并且日期格式正确。
我的收获是,如果您偶然遇到此错误,请检查您的开发区域。