如何比较两个 Carbon 时间戳?

How to compare two Carbon Timestamps?

我有两个时间戳,我创建的 edited_at 和 created_at(Laravel 的)... 在数据库中,两者都有时间戳类型和默认值 0000-00-00 00:00:00... 但是

var_dump(edited_at variable) 正在给出字符串。而 var_dump(created_at variable) 是 object/Carbon。这些时间戳有什么问题?

我必须在使用格式 ('U') 转换为整数后比较两者。我只能在 Carbon Object 上调用这个方法。我该怎么做?

首先,Eloquent 自动将其时间戳(created_atupdated_at)转换为碳对象。您可以只使用 updated_at 来获得这个不错的功能,或者在 $dates 属性:

的模型中指定 edited_at
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
}

首先,使用内置 eloquent 功能转换时间戳,如 所述。

那你就可以直接用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);

这将 echo 两个日期中的较小者,在本例中为 $dt1

http://carbon.nesbot.com/docs/

Carbon 有一堆比较函数有助记名:

  • 等于()
  • notEqualTo()
  • 大于()
  • 大于或等于()
  • 小于()
  • lessThanOrEqualTo()

用法:

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

Valid for nesbot/carbon 1.36.2

如果您不确定自己使用的 Carbon 版本,运行 这个

$composer show "nesbot/carbon"

文档:https://carbon.nesbot.com/docs/#api-comparison

这就是我比较 2 个日期的方式,now() 和 table

中的一个日期
@if (\Carbon\Carbon::now()->lte($item->client->event_date_from))
    .....
    .....
@endif

应该可以正常工作。 我用过Carbon提供的比较函数