/ / Calcular fecha de finalización adelantar la fecha si hay un día festivo - php, mysql

Calcule la fecha de finalización empujando la fecha hacia adelante si hay vacaciones - php, mysql

He escrito un código donde comienzo.fecha y número de días de duración y luego obtener una fecha de finalización, es decir, la fecha de inicio el 18 de diciembre, la duración de 21 días, la fecha de finalización el 8 de enero. Sin embargo, quiero adelantar la fecha de finalización para evitar ciertos días festivos (del 25 de diciembre al 6 de enero) para que la fecha de finalización sea el 15 de enero. Todas las respuestas que he visto incluyen cómo calcular los días hábiles y los fines de semana, lo que no necesito. Solo quiero poder definir los días festivos específicos en una matriz; consúltelo para ver si el día festivo está dentro de la fecha de inicio. y la fecha de finalización y, si se trata, adelanta la fecha de finalización ese número de días.

Oh, entonces la fecha debe ser insertada en una base de datos. Gracias.

Respuestas

0 para la respuesta № 1

Iterar a través de la matriz $ holidays. Si un día festivo está dentro del rango dado, entonces mueva la fecha de finalización un día en el futuro:

$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 para la respuesta № 2

Gracias por todos los que publicaron posible.soluciones Resolví el problema agregando un selector a la página php que agrega 7, 14 o 21 días a la fecha final (el usuario ve esto como 1 semana, 2 semanas, etc.) y esto resolvió el problema.