2つのカーボンタイムスタンプを比較する方法は?


83

作成したedited_atとcreated_at(Laravel)の2つのタイムスタンプがあります...データベースでは、どちらもタイムスタンプタイプとデフォルト値0000-00-00 00:00:00 ...です。

var_dump(edited_at variable)文字列を与えています。一方では、var_dump(created_at variable)/カーボンオブジェクトです。これらのタイムスタンプの何が問題になっていますか?

format( 'U')を使用して整数に変換した後、両方を比較する必要があります。このメソッドはCarbonObjectでのみ呼び出すことができます。どうやってやるの?


正確に何を比較したいですか?どちらが古い/新しいか知りたいですか?
lukasgeiter 2015

はい、私は古い/新しいキャンプをしたい
Hassan Saqib

回答:


189

まず、Eloquentは、タイムスタンプ(created_atupdated_at)をカーボンオブジェクトに自動的に変換します。を使用updated_atしてその優れた機能を取得するかedited_at、モデルの$datesプロパティで次のように指定できます。

protected $dates = ['edited_at'];

ここで、実際の質問に戻ります。Carbonにはたくさんの比較関数があります:

  • eq() 等しい
  • ne() 等しくない
  • gt() より大きい
  • gte() 以上以上
  • lt() 未満
  • lte() 以下

使用法:

if($model->edited_at->gt($model->created_at)){
    // edited at is newer than created at
}

2
時間ではなく日付のみを比較するにはどうすればよいですか?
geckob 2016年

3
@geckobおそらく最も簡単な方法$date1->toDateString() == $date2->toDateString()
lukasgeiter 2016年

テスト中ですが、比較演算子を使用してCarbonオブジェクトを比較することができます。それは新機能ですか?
JCarlosR 2017

これを使用するときは、null許容のタイムスタンプを処理することを忘れないでください。LaravelはSQLnullnullCarbonオブジェクトではなくPHPに変換するだけで、次のようになりますcall to a member function lt() on null
okdewit 2017

$ some_cabron_date-> endOfDay()または$ some_cabron_date-> startOfDay()を使用して、目的の操作を実行する必要があります
WilliaanLopes19年

21

Carbonには、ニーモニック名を持つ多数の比較関数があります

  • に等しい()
  • notEqualTo()
  • greatThan()
  • 以上()
  • 未満()
  • lessThanOrEqualTo()

使用法:

 if($model->edited_at->greaterThan($model->created_at)){
     // edited at is newer than created at
 }

nesbot / carbon1.36.2に有効

使用しているCarbonのバージョンがわからない場合は、これを実行してください

$composer show "nesbot/carbon"

ドキュメント:https//carbon.nesbot.com/docs/#api-comparison


3

まず、この回答で説明さているよう、組み込みの雄弁な機能を使用してタイムスタンプを変換します

次に、Carbonmin()またはmax()関数を使用して比較できます。例えば:

$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0); $dt2 = Carbon::create(2014, 1, 30, 0, 0, 0); echo $dt1->min($dt2);

これはecho、2つの日付のうち小さい方になり、この場合は$dt1です。

http://carbon.nesbot.com/docs/を参照してください


1

これは私が2つの日付、now()とテーブルからの日付を比較する方法です

@if (\Carbon\Carbon::now()->lte($item->client->event_date_from))
    .....
    .....
@endif

正しく動作するはずです。Carbonが提供する比較関数を使用しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.