Laravel Carbon查看日期是否已过去

时间:2017-11-01 16:31:25

标签: php laravel php-carbon

我对此非常困惑,也许这是我看不到的简单事情。如果我想看看今天的日期是否过去,我应该能够做到这样的事情吗?

if( $league->date_start <= Carbon::now() ){
    $join  = false;
    $message = 'Sorry, the league has already started';
}

如果我将日期转出

$league->date_start = 2017-07-31 00:00:00
Carbon::now() = 2017-11-01 16:29:27

$league->date_start是受保护的日期,因此它是碳实例

但这不起作用,如果我将其切换到$league->date_start >= Carbon::now()它可以工作,不会让我加入。我知道&#34;联盟&#34;开始日期是过去的,所以不应该是$league->date_start <= Carbon::now() ?????

3 个答案:

答案 0 :(得分:33)

内置的Carbon方法isPast,您可以使用:

$league->date_start->isPast()

确定日期是否已过去

答案 1 :(得分:2)

尝试使用if ($league->date_start->diffInSeconds() >= 0)。方法diffInSeconds返回当前时间与碳实例之间的差异。

以下是修补程序输出的示例 -

>>> $now = \Carbon\Carbon::now();
=> Carbon\Carbon {#648
     +"date": "2017-11-01 16:41:04.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }
>>> $now->diffInSeconds();
=> 5
>>> $now->diffInSeconds();
=> 7
>>> $now->diffInSeconds();
=> 8
>>> $now->diffInSeconds();
=> 10
>>> $now->diffInSeconds() > 0
=> true

答案 2 :(得分:1)

查看carbon docs上的“比较”部分。您应该致电var checkStatet = function() { jQuery.ajax({ url: 'check_diffex.php?od=$sdsst' }).done(function(data) { //lookup the element just once var time = jQuery('#rbtntime'); //initialize the time var o = 2700; //start loop delay setTimeout(function countdown(){ var minutes = Math.floor(o / 60); var seconds = o % 60; //update the time time.html(minutes.toString() + ':' + seconds.toString()); //decrement the time for next iteration o--; //so long as time is not zero, loop if (o > 0) setTimeout(countdown, 1000); }, 1000); }); } checkStatet();来比较两个碳实例。