问题描述
我正在尝试检查一个日期时间是否在另一个日期时间之后,但是它似乎不起作用。我只是在使用>=
运算符,但是没有按预期运行?
代码如下:
public function hasCompleted() {
return Carbon::parse($this->withdrawable_at) >= Carbon::Now();
}
我正在使用Carbon包,这是一个here找到的DateTime PHP库。
对于以下数据,它似乎返回true,但不应返回。
2020-11-13 02:59:04,2020-11-12 15:17:31
解决方法
碳有自己的方法,称为isAfter和isBefore
public function hasCompleted() {
return Carbon::parse($this->withdrawable_at)->isAfter(Carbon::now());
}
,
您可以使用[datesindex:]
,>
,>=
或<
比较<=
对象,因此它也可以完美地与DateTime
实例一起使用:
Carbon
输出var_dump(Carbon::parse('2020-11-13 02:59:04') >= Carbon::parse('2020-11-12 15:17:31'));
var_dump(Carbon::parse('2020-11-12 15:17:31') >= Carbon::parse('2020-11-13 02:59:04'));
,然后输出true
(在这种情况下,因为13> 12),这是预期的行为。最新日期被认为大于最早的日期。我觉得它很直观,但是如果对您而言不够明确,则可以使用false
/ isAfter
,请注意,这些方法仅在内部使用isBefore
和>