Question: 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!

Answer: 
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();

```
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);

```