Neha
Neha

Reputation: 2281

How to compare two dates and find which date is greater using Carbon?

I need to compare two dates and find which date is greater.

 $actual_date = Carbon::createFromFormat('d-m-Y',$night_out->actual_return_date);
 $expected_date =  Carbon::createFromFormat('d-m-Y', $night_out->expected_return_date);

 $days = $expected_date->diffInDays($actual_date);  // gives the days count only

Thanks in Advance!

Upvotes: 6

Views: 6311

Answers (3)

jspit
jspit

Reputation: 7703

Carbon is an extension of datetime and inherits all properties of the base class. DateTime objects and thus carbon objects are directly comparable. Special comparison methods are not needed for this case.

if($actual_date > $expected_date){
     // do something
}

If only the date which is greater is needed, you can do that

$max_date = max($actual_date , $expected_date);

Note: $ max_date is an object reference of $actual_date or $expected_date. You can get a copy with the copy () method or use clone.

$max_date = max($actual_date , $expected_date)->copy();

Upvotes: 9

Amit Senjaliya
Amit Senjaliya

Reputation: 2945

Use gt function for that:

$actual_date = Carbon::createFromFormat('d-m-Y',$night_out->actual_return_date);
$expected_date =  Carbon::createFromFormat('d-m-Y', $night_out->expected_return_date);

if($expected_date->gt($actual_date)){            
    return $expected_date; //Max date
} else {
    return $actual_date;  //Min date
}

OR:

You need to find a greater date from two dates using max and array_map function like:

$actual_date = Carbon::createFromFormat('d-m-Y',$night_out->actual_return_date);
$expected_date =  Carbon::createFromFormat('d-m-Y', $night_out->expected_return_date);

// store dates value into an array to find the max date.

$date = array();
$date['actual_date'] = $actual_date;
$date['expected_date'] = $expected_date;

$max = max(array_map('strtotime', $date));

echo date('d-m-Y', $max);

Upvotes: 0

Poldo
Poldo

Reputation: 1932

You can use carbon method greaterThan()

if($actual_date->greaterThan($expected_date)){
     // logic here
 }

Upvotes: 3

Related Questions