私は2つのタイムスタンプ、edited_atを作成し、created_at(Laravel's)...を持っています...
var_dump(edited_at variable)
は文字列を提供しています。 var_dump(created_at variable)
はオブジェクト/カーボンです。これらのタイムスタンプの何が問題になっていますか?
Format( 'U')を使用して整数に変換した後、両方を比較する必要があります。このメソッドはCarbonオブジェクトでのみ呼び出すことができます。どうやってやるの?
まず、Eloquentはタイムスタンプ(created_at
、updated_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
}
Carbonには多数の比較関数がありますニーモニック名:
使用法:
if($model->edited_at->greaterThan($model->created_at)){
// edited at is newer than created at
}
Nesbot/carbon 1.36.2に有効
使用しているCarbonのバージョンがわからない場合は、これを実行します
$composer show "nesbot/carbon"
最初に、 この回答では の説明に従って、組み込みの雄弁機能を使用してタイムスタンプを変換します。
次に、比較のためにCarbonのmin()
またはmax()
関数を使用できます。例えば:
$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0); $dt2 = Carbon::create(2014, 1, 30, 0, 0, 0); echo $dt1->min($dt2);
これは、2つの日付のうち小さい方をecho
します。この場合は$dt1
です。
http://carbon.nesbot.com/docs/ を参照してください
@lukasgeiterの回答を拡張し、メソッドeq()
、ne()
、gt()
、gte()
、lt()
、lte()
は、単にday
ただし、time
およびtimezone
も参照します
>> $date->toArray();
{
"year": 2019,
"month": 2,
"day": 23,
"dayOfWeek": 6,
"dayOfYear": 53,
"hour": 7,
"minute": 39,
"second": 52,
"micro": 849616,
"timestamp": 1550907592,
"formatted": "2019-02-23 07:39:52",
"timezone": {
"timezone_type": 3,
"timezone": "UTC"
}
}
タイムゾーンはCarbon::parse($stringDate, new DateTimeZone('Asia/Dubai'))
として調整できます
その日だけを比較する
$date1->startOfDay()->eq($date2->startOfDay())
私はこれらの方法を使用できませんでした。他の人の助けになることを願っています。