我有两个时间戳,即我创建的edited_at和created_at(Laravel的)...在数据库中,两者的时间戳均为类型,默认值为0000-00-00 00:00:00 ...但是
var_dump(edited_at variable)
给字符串。而var_dump(created_at variable)
对象/碳。这些时间戳有什么问题?
使用format('U')转换为整数后,我必须比较两者。我只能在Carbon对象上调用此方法。我怎样才能做到这一点?
我有两个时间戳,即我创建的edited_at和created_at(Laravel的)...在数据库中,两者的时间戳均为类型,默认值为0000-00-00 00:00:00 ...但是
var_dump(edited_at variable)
给字符串。而var_dump(created_at variable)
对象/碳。这些时间戳有什么问题?
使用format('U')转换为整数后,我必须比较两者。我只能在Carbon对象上调用此方法。我怎样才能做到这一点?
Answers:
首先,Eloquent自动将其时间戳(created_at
,updated_at
)转换为Carbon对象。您可以使用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
}
$date1->toDateString() == $date2->toDateString()
null
转换为PHPnull
而不是Carbon对象,您将获得call to a member function lt() on null
。
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"
首先,使用此内置雄辩功能转换时间戳,如本答案所述。
然后,您可以使用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
是两个日期中的较小者,在这种情况下为$dt1
。