2015-12-13 3 views
0

Я написал код, где у меня есть дата начала и количество дней, а затем введите дату окончания, т.е. дату начала 18 декабря, продолжительность 21 день, дата окончания 8 января , Однако я хочу подтолкнуть дату окончания, чтобы избежать определенных праздников (с 25 декабря по 6 января), чтобы дата окончания была 15 января. Все ответы, которые я видел, включают в себя, как рассчитать рабочие дни и вынуть выходные, которые мне не нужны. Я просто хочу, чтобы определить конкретные праздники в массиве, получить его, чтобы увидеть, если праздник находится в начале даты и даты окончания, и если он перемещает дату окончания вперед на это количество дней.Рассчитайте дату окончания даты, если дате отправления

О, тогда дата должна быть вставлена ​​в базу данных. Благодарю.

+1

Можете ли вы показать, что вы пробовали? –

+0

Вы уже написали ответ: «Определите особые праздники в массиве, получите его, чтобы увидеть, находится ли отпуск в пределах даты начала и окончания, и если он перемещает дату окончания вперед этим количеством дней» :-) –

+0

Hi Пол, у меня есть праздники в массиве, называемом $ holidays, без проблем, но я борюсь с кодом, чтобы узнать, находится ли дата (даты) отпуска между датой начала и конечной датой, и если она толкает ее количество дней вперед. – JanTay

ответ

0

Итерации через массив $ holidays. Если праздник находится в заданном диапазоне, а затем переместить дату окончания один день в будущем:

$startDate = new DateTime('2015-12-18'); 
$endDate = new DateTime('2016-01-08'); 
// $holidays array must be sorted. if not, then sort it first 
$holidays = array("2015-12-25","2015-12-26","2016-01-01"); 

$newEndDate = $endDate; 

foreach ($holidays as $holiday) { 
    $holidayDate = new DateTime($holiday); 
    if ($startDate <= $holidayDate && $holidayDate <= $newEndDate) { 
     // there is a holiday in the range 
     $newEndDate->add(new DateInterval('P1D')); 
    } 
} 

echo($newEndDate->format('Y-m-d')); 
+0

Спасибо, Пол, я вынул код, но когда он запускается, я получаю пустой экран (я прочитал еще одно сообщение, в котором говорилось, что это нужно делать с var_dump). Итак, если $ newEndDate добавляет даты к концу, как мне получить новую дату окончания, чтобы показать в запросе mysql? – JanTay

+0

Используйте '$ newEndDate-> format ('Y-m-d')', чтобы получить строковое представление для SQL. –

0

Спасибо за все те, которые размещены возможными решения. Я решил проблему, добавив селектор на страницу php, который добавляет 7, 14 или 21 день до даты окончания (пользователь видит это как 1 неделю, 2 недели и т. Д.), И это решило проблему.

+0

Это комментарий, а не ответ. – Matsmath

Смежные вопросы