Ver Mensaje Individual
  #11 (permalink)  
Antiguo 15/11/2018, 06:23
paez903
 
Fecha de Ingreso: marzo-2016
Ubicación: venezuela
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: sumar dias habiles en cha mas no dias fines de semana

Me he quedado casi toda la Noche revisando y leyendo y cuadrando y gracias a todos por la ayuda me acararon mucho ya creo que lo tengo listo solo un pequeño detalle al colocar los feriados como el ejemplo de hhs sin el año me da errores por eso debi cambiar algunas cosas,según lo que pude leer y entender, el código ya se puede decir que esta listo solo ese pequeño detalle para poder incluir los feriados coloco el código a ver si ven el error o me orientan, allí me corre bien.

<?php


$fechaIngreso ='2016-02-01';
$fechaSalida ='2018-11-01';


$fechaIngresoObj = new DateTime($fechaIngreso);
$fechaSalidaObJ = new DateTime($fechaSalida);
$tiempotrascurrido = $fechaSalidaObJ->diff($fechaIngresoObj)->y;


if (($tiempotrascurrido>1) and ($tiempotrascurrido<2)) {
$diass ='15';
}

if (($tiempotrascurrido>=2) and ($tiempotrascurrido<3)) {
$diass ='16';
}

if (($tiempotrascurrido>=3) and ($tiempotrascurrido<4)) {
$diass ='17';
}

echo 'Salio '.$fechaSalida.'<br>';
echo 'Le Corresponden '.$diass.' Dias Habiles <br>';



//Arreglo con todos los feriados
$feriados = array(
'2018-11-08', //feriado
'2018-12-25', //feriado
'2018-01-01', //feriado

);
//le Asigno la fecha se salida para que comience a contar
$comienzo = strtotime($fechaSalida);
//Inicializo la Fecha Final
$fecha_venci_noti = $comienzo;
//Inicializo El Contador
$i = 0; while ($i < $diass) {
//Le Sumo un Dia a La Fecha Final que seria la fecha de regreso (86400 Segundos)
$fecha_venci_noti += 86400;
//Inicializo a FALSE La Variable Para Saber Si Es Feriado
$es_feriado = FALSE; //Recorro Todos Los Feriados
foreach ($feriados as $key => $feriado) {
//Verifico Si La Fecha Final Actual Es Feriado O No
if (date("Y-m-d", $fecha_venci_noti) === date("Y-m-d", strtotime($feriado))) {
//En Caso de Ser feriado Cambio Mi variable A TRUE
$es_feriado = TRUE; } }
//Verifico Que No Sea Un Sabado, Domingo O Feriado
if (!(date("w", $fecha_venci_noti) == 6 || date("w", $fecha_venci_noti) == 0 || $es_feriado)) {
//En Caso De No Ser Sabado, Domingo O Feriado Aumentamos Nuestro contador

$i++; } }

// aqui llamaria el guardado a la base de datos para almacenar los datos

//Conversion de los valores para verlos nuevamente en fecha.
$fecha=date("d-m-Y", $fecha_venci_noti);
// anuncio del resulta es decir la fecha de regreso
echo '<br> Debe regresar: '.$fecha;

echo '<br> En la presente fecha ya se han descontado los fines de semana y feriados';

?>