Why Are Custom Errors Displaying For The Wrong Dates?

Errors are displaying for the wrong dates. The model(BookingRoom) is running this custom rule on start and end dates on a tabular input form to check for overlapping date ranges. What am I doing wrong?


public function notOverlap()

{                      

    $startDateThis = new DateTime($this->startDate);                        

    $endDateThis = new DateTime($this->endDate); 

    $criteria = new CDbCriteria;


    $criteria->condition = "(id !='".$this->id."' AND bookingId ='".$this->bookingId."')";


    $items = BookingRoom::model()->findAll($criteria);





            foreach ($items as $item){                    


                $startDateItem = new DateTime($item->startDate);                    

                $endDateItem = new DateTime($item->endDate);                    




                   if ($startDateItem <= $endDateThis && $startDateThis <= $endDateItem)             

                      {                

                        $this->addError('startDate', 'Room already taken!');

                        $this->addError('endDate', 'Room already taken!');

                      }                    

            } 

}