我有两个时间戳,即我创建的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。