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();
}
→ Ссылка