public function generateStartDate(LeavePeriodDataHolder $leavePeriodDataHolder)
 {
     $dateFormat = $leavePeriodDataHolder->getDateFormat();
     $isLeavePeriodStartOnFeb29th = $leavePeriodDataHolder->getIsLeavePeriodStartOnFeb29th();
     $nonLeapYearLeavePeriodStartDate = $leavePeriodDataHolder->getNonLeapYearLeavePeriodStartDate();
     $startDate = $leavePeriodDataHolder->getStartDate();
     $startDate = $isLeavePeriodStartOnFeb29th == 'Yes' ? $nonLeapYearLeavePeriodStartDate : $startDate;
     $currentDate = $leavePeriodDataHolder->getCurrentDate();
     $currentDateTimestamp = strtotime($currentDate);
     $currentYear = date('Y', strtotime($currentDate));
     $startDate = $currentYear % 4 == 0 && $isLeavePeriodStartOnFeb29th == 'Yes' ? '02-29' : $startDate;
     $leavePeriodStartDate = $currentYear . '-' . $startDate;
     $leavePeriodStartDateTimestamp = strtotime($leavePeriodStartDate);
     if ($leavePeriodStartDateTimestamp > $currentDateTimestamp) {
         $leavePeriodStartDateTimestamp = strtotime('-1 year', $leavePeriodStartDateTimestamp);
     }
     $year = date('Y', $leavePeriodStartDateTimestamp);
     if ($isLeavePeriodStartOnFeb29th == 'Yes' && $year % 4 == 0) {
         return $year . '-' . '02-29';
     }
     return date($dateFormat, $leavePeriodStartDateTimestamp);
 }