Carbonを使用して、時間が2つの時点の間にあるかどうかを知る 質問する

Carbonを使用して、時間が2つの時点の間にあるかどうかを知る 質問する

私は Laravel を使用しています。ベンダー フォルダーにすでに存在していたものを見つけましたCarbon。簡単に検索してみたところ、PHP Date time の優れた拡張機能であることがわかりました。

アプリケーションのどこかで、特定の時間が 2 つの時点の間にあるかどうかを確認するロジックが必要でした。たとえば、10:00 が 9:55 と 10:05 の間にあるかどうかを確認したいとします。確かに、その時間は含まれていますが、Carbon の助けを借りてそのロジックをどのように使用すればよいでしょうか。

デフォルトではCarbon::now()、日付と時刻が形式で返されます2014-12-02 14:37:18。時間部分のみを抽出できれば、つまり、14:37:182 つの時間を比較して、テスト対象の時間が 2 つの時点に該当するかどうかを確認できると考えていました。

2 つの Carbon オブジェクトを直接チェックすると、年もチェックしようとします。ただし、必要なのは時間の部分だけです。

そして実際のところ、炭素を介して時間 (h:m:s) を直接比較できるかどうかもわかりません。

ベストアンサー1

はい、Carbonでこれを行う方法はあります。ドキュメントを見てください。ここ

現在のインスタンスが他の 2 つのインスタンスの間にあるかどうかを判断するには、適切な名前の between() メソッドを使用できます。3 番目のパラメータは、等しいかどうかの比較を行うかどうかを示します。デフォルトは true で、境界の間にあるか、境界と等しいかを判断します。

$first = Carbon::create(2012, 9, 5, 1);
$second = Carbon::create(2012, 9, 5, 5);
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second));          // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second));          // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false));   // bool(false)

おすすめ記事