比较 blade.php 文件中的两个日期

Comparing two dates in blade.php file

我必须比较 list.blade.php 中的两个日期,例如

if today's date is greater than or equal to expiry date then do something else do something.

代码如下:

@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

Date format: 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 是我数据库中的文本类型,所以这可能是问题所在。

使用这个 => Carbon::now();

并将您的日期设置为您的格式 (YYYY-MM-DD)。将该日期存储在 var 中并将该 var 与到期日期进行比较。

你的 today_date 格式有问题。

today_date 请给出日期和时间。

由于 expire_date 是文本,您需要对其进行转换。幸运的是,使用 Carbon,这很容易做到:

$expire_date = Carbon::createFromFormat('Y-m-d', $entry->expire_date);

然后你就可以用它来compare

@if($today_date->gte($expire_date))

您可能需要先确保 $expire_date 不为空并且不会抛出任何错误。如果您将日期作为日期或日期时间列存储在数据库中也会更容易,以确保其始终采用正确的格式,并且您还可以将其作为时间戳添加到模型中,或者将 Carbon 作为 accessor function.

@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 参数是可选的,它表示您希望 return 值是绝对值还是相对值,如果传入的日期是小于当前实例。这将默认为 true,return 绝对值。

More here

您需要首先格式化您的 Cabon 日期对象以匹配来自您的数据库数据的日期(字符串)值。

@if($today_date->format("Y-m-d") >= $entry->expire_date)

它被打印出来是因为你的 PHP 标签是错误的..缺少“?”,应该是 <?PHP