如何比较两个碳时间戳?

我有两个时间戳,edit _ at (Laravel’s) ..。 In database, both have type timestamp and default value 0000-00-00 00:00:00... But

var_dump(edited_at variable)给出字符串。而 var_dump(created_at variable)是对象/碳。这些时间戳有什么问题吗?

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

213435 次浏览

首先,Eloquent 自动将它的时间戳(created_atupdated_at)转换为碳对象。你可以使用 updated_at来获得这个好的特性,或者在你的模型中使用 $dates属性来指定 edited_at:

protected $dates = ['edited_at'];

Now back to your actual question. Carbon has a bunch of comparison functions:

  • eq()等于
  • ne()不等于
  • gt()大于
  • 大于或等于 gte()
  • lt()小于
  • lte()小于或等于

用法:

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

首先,使用内置的雄辩功能转换时间戳,如 in this answer所述。

然后你可以使用 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

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

碳有很多比较函数:

  • 等于()
  • NoteEqualTo ()
  • 比()更伟大
  • 大于等于()
  • Less Than ()
  • Less ThanOrEqualto ()

Usage:

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

适用于 Nesbot/碳1.36.2

如果你不确定你使用的是哪个 Carbon 版本,运行这个

$composer show "nesbot/carbon"

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

这是我如何比较两个日期,现在和一个日期从表

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

应该没问题。 我使用了 Carbon 提供的比较函数。