/ / Vypočítajte konečný dátum posunu dátumu dopredu, ak je dovolenka - php, mysql

Vypočítajte dátum ukončenia presunutie dátumu vpred, ak je dovolenka - php, mysql

Napísal som nejaký kód, kde mám začiatokdátum a počet dní trvania a potom dátum ukončenia, tj dátum začiatku 18. december, trvanie 21 dní, dátum ukončenia 8. január. Chcem však posunúť konečný termín dopredu, aby sa zabránilo určitým sviatkom (25. december až 6. január), aby sa dátum ukončenia stal 15. januárom. Všetky odpovede, ktoré som videl, zahŕňajú, ako vypočítať pracovné dni a vybrať si víkendy, ktoré nepotrebujem. a dátum ukončenia a ak presúva dátum ukončenia dopredu o tento počet dní.

Potom je potrebné vložiť dátum do databázy. Vďaka.

odpovede:

0 pre odpoveď č. 1

Iterácia cez pole prázdnin $. Ak je dovolenka v danom rozsahu, presuňte koncový dátum jeden deň v budúcnosti:

$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 pre odpoveď č. 2

Ďakujem vám za všetkých, ktorí to zaslaliriešenie. Tento problém som vyriešil pridaním voliča na stránku php, ktorá pridáva 7, 14 alebo 21 dní ku konečnému dátumu (používateľ to vidí ako 1 týždeň, 2 týždne atď.) A tento problém sa vyriešil.