2017-08-28 25 views
0

比较两个日期我有两个日期在list.blade.php比较喜欢在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

是在数据库中的日期时间格式的EXPIRE_DATE?它在你的控制器中被标记为时间戳吗? – aynber

+0

否expire_date是文本。 –

+0

如何在刀片文件中将expire_date转换为日期。你可以帮助一点 –

回答

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

+0

如果我想使用这个data_difference它是忽略' - '符号,同时计算两个日期之间的差异。所以if条件不起作用。 –

+0

更新了代码,现在检查。 –

+0

谢谢您,先生,我不能满足您的答案,因为我的声誉不足以做到这一点,但那非常有帮助。 –

0

使用此=>碳:: now();

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

您的today_date格式存在问题。

today_date给出日期和时间。

+0

我试过碳::现在但没有成功,请您详细说明您的答案的第二部分,并以示例的形式说明我无法获得您的意见,当您说today_date –

+0

$ today_date-> format('YYYY-MM-DD') 的格式使用$ today_date。确保这两个日期的甲酸盐是相同的。 –

0

由于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

+0

这个$ expire_date可以在刀片文件的php标签之外访问吗? –

+0

是的,只要您将其设置在刀片文件中即可。否则,您可以在控制器或具有存取器功能的模型中转换它。 – aynber

+0

你想让我试试这个吗? ' @php use Carbon \ Carbon; $ today_date = Carbon :: now(); @endphp @foreach($ entries as $ k => $ entry) $ expire_date = Carbon :: createFromFormat('Y-m-d',$ entry-> expire_date); @if($ today_date-> GTE($ EXPIRE_DATE)) //做一些 @else //做点什么 @endif @endforeach –

0

您需要首先进行格式化您的增碳日期对象以匹配您的数据库数据的日期(字符串)值。

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

它被打印,因为你的PHP标签错误..失踪“?”,应该是<?PHP

+0

这是正确的吗? '@php 使用Carbon \ Carbon; $ today_date = Carbon :: now(); @foreach($ entries as $ k => $ entry) $ expire_date = Carbon :: createFromFormat('Y-m-d',$ entry-> expire_date); $ data_difference = $ expire_date-> diffInDays($ today_date); @endforeach @endphp' –

相关问题