/** * Testing end date falling into Feb 29th */ public function testGenerateEndDate17() { $leavePeriodDataHolder = new LeavePeriodDataHolder(); $leavePeriodDataHolder->setIsLeavePeriodStartOnFeb29th('No'); $leavePeriodDataHolder->setDateFormat('Y-m-d'); $leavePeriodDataHolder->setLeavePeriodStartDate('2011-03-01'); $leavePeriodEndDate = $this->leavePeriodService->generateEndDate($leavePeriodDataHolder); $this->assertEquals('2012-02-29', $leavePeriodEndDate); }
public function testGenerateStartDate16() { $leavePeriodDataHolder = new LeavePeriodDataHolder(); $leavePeriodDataHolder->setIsLeavePeriodStartOnFeb29th('Yes'); $leavePeriodDataHolder->setNonLeapYearLeavePeriodStartDate('04-01'); $leavePeriodDataHolder->setDateFormat('Y-m-d'); $leavePeriodDataHolder->setCurrentDate('2014-04-01'); $leavePeriodStartDate = $this->leavePeriodService->generateStartDate($leavePeriodDataHolder); $this->assertEquals('2014-04-01', $leavePeriodStartDate); }
private function _getPopulatedLeavePeriodDataHolder() { $leavePeriodDataHolder = new LeavePeriodDataHolder(); $isLeavePeriodStartOnFeb29th = ParameterService::getParameter('isLeavePeriodStartOnFeb29th'); $nonLeapYearLeavePeriodStartDate = ParameterService::getParameter('nonLeapYearLeavePeriodStartDate'); $leavePeriodStartDate = ParameterService::getParameter('leavePeriodStartDate'); $leavePeriodDataHolder->setIsLeavePeriodStartOnFeb29th($isLeavePeriodStartOnFeb29th); $leavePeriodDataHolder->setNonLeapYearLeavePeriodStartDate($nonLeapYearLeavePeriodStartDate); $leavePeriodDataHolder->setStartDate($leavePeriodStartDate); $leavePeriodDataHolder->setDateFormat('Y-m-d'); return $leavePeriodDataHolder; }
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); }