web-dev-qa-db-ja.com

Laravel 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()に切り替えると機能し、参加させません。 「リーグ」の開始日が過去であることは知っているので、$league->date_start <= Carbon::now() ?????

8
Packy

組み込みのCarbonメソッドisPastがあるので、次を使用できます。

$league->date_start->isPast()

日付が過去かどうかを判断する

38

carbon docs の「比較」セクションを確認してください。 $first->lte($second)を呼び出して、2つのカーボンインスタンスを比較する必要があります。

2
Ivan Kalita

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
1
SagunKho