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

时间:2017-08-28 12:55:59

标签: php laravel date backpack-for-laravel

我必须比较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文本类型,所以这可能是问题所在。

4 个答案:

答案 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,返回绝对值。

More here

答案 3 :(得分:0)

您需要先设置Cabon日期对象的格式,以匹配数据库数据中的日期(字符串)值。

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

它被打印,因为你的PHP标签是错的..缺少&#34;?&#34;,应该是<?PHP