Laravel Carbon как проверить прошла ли дата
Сравниваю строку формата 2020-05-17 с текущей датой но результат не верный. public static function endDate($date){
if(Carbon::parse($date)->format("d.m.y")<Carbon::now()){
return false;//срок не оконен
}
else{
return true;//дата завершена
}
}
Ответы (1 шт):
Автор решения: Romka
→ Ссылка
Проблема в том, что вы строку сравниваете с объектом. Это некорректно.
Можно исправить, сделав так:
function endDate(string $date): bool
{
if (Carbon::parse($date)->getTimestamp() < Carbon::now()->getTimestamp()) {
return false;
}
return true;
}
Тут мы сравниваем timestamp дат, который является int значением.
Можно упростить до:
function endDate(string $date): bool
{
return Carbon::parse($date)->getTimestamp() > Carbon::now()->getTimestamp();
}
Можно еще упростить до:
function endDate(string $date): bool
{
return Carbon::parse($date)->greaterThan(Carbon::now());
}
И еще можно упростить до:
function endDate(string $date): bool
{
return Carbon::parse($date)->isPast();
}