我必须比较list.blade.php中的两个日期,如
如果今天的日期大于或等于到期日,那么别做其他事情。
这是代码:
@php
use Carbon\Carbon;
$today_date = Carbon::today();
@endphp
@foreach ($entries as $k => $entry)
@if($today_date >= $entry->expire_date)
// do something
@else
// do something
@endif
@endforeach
日期格式:YYYY-MM-DD
但这不起作用。
请帮忙
谢谢
修改
我试过了:
<?php
use Carbon\Carbon;
$today_date = Carbon::now();
foreach ($entries as $k => $entry) {
$expire_date = Carbon::createFromFormat('Y-m-d', $entry->expire_date);
}
?>
它给我的错误如下: image
我的数据库中还有一个expire_date
文本类型,所以这可能是问题所在。
答案 0 :(得分:2)
使用此=&gt;碳::现在();
并将日期格式化为格式(YYYY-MM-DD)。将该日期存储在var中,并将该var与到期日期进行比较。
你的today_date格式存在问题。
today_date给出了日期和时间。
答案 1 :(得分:0)
由于expire_date是文本,因此您需要转换它。幸运的是,使用Carbon
,它很容易做到:
$expire_date = Carbon::createFromFormat('Y-m-d', $entry->expire_date);
然后您可以将其用于compare
@if($today_date->gte($expire_date))
您可能希望确保$expire_date
不为空,并且不会先抛出任何错误。如果您将日期作为日期或日期时间列存储在数据库中,以确保其始终格式正确,并且您还可以将其添加为模型中的时间戳,或将Carbon应用为{ {3}}
答案 2 :(得分:0)
@php
use Carbon\Carbon;
$today_date = Carbon::now();
foreach ($entries as $k => $entry) {
$expire_date = Carbon::createFromFormat('Y-m-d', $entry->expire_date);
$data_difference = $today_date->diffInDays($expire_date, false); //false param
if($data_difference > 0) {
//not expired
}
elseif($data_difference < 0) {
//expired
} else {
//today
}
}
@endphp
false
参数是可选的,表示如果传入的日期小于当前实例,您希望返回值是绝对值还是可能具有 - (负)符号的相对值。这将默认为true,返回绝对值。
答案 3 :(得分:0)
您需要先设置Cabon日期对象的格式,以匹配数据库数据中的日期(字符串)值。
@if($today_date->format("Y-m-d") >= $entry->expire_date)
它被打印,因为你的PHP标签是错的..缺少&#34;?&#34;,应该是<?PHP