Cita:
Iniciado por Tokkara
Lo unico que hacemos es contar las semanas que hay entre las 2 fechas. y multiplicarlo por los días de curso que hay a la semana. Luego cogemos la última semana incompleta, si existe, y vamos contando día a día.
Gracias, por la respuesta, pero así tampoco funciona. Al final lo he solucionado usando el codigo de Marvin, pero añadiendole algo:
Código PHP:
function CALCULA_DIAS($hoy,$fechaCurso,$diasCurso){
$mkCurso = explode('-',$fechaCurso);
//1 Lunes al 7 Domingo
$diasCount = array('1','2','3','4','5','6','7');
$numDias = count($diasCount);
$fechaHoy = explode('-',$hoy);
$semanaAno = date('W',mktime(0, 0, 0, $fechaHoy[1], $fechaHoy[0], $fechaHoy[2])); //esta semana
$diaSemana = date('N',mktime(0, 0, 0, $fechaHoy[1], $fechaHoy[0], $fechaHoy[2])); //Día de la semana en la que termina
//Esto es nuevo con respecto al código de Marvin /////////////////////////////////////
$diaComienzo = date('N',mktime(0, 0, 0, $mkCurso[1], $mkCurso[0], $mkCurso[2])); //Día de comienzo
/////////////////////////////////////////////////////////////////////
$calcula1 = mktime(0, 0, 0, $mkCurso[1], $mkCurso[0], $mkCurso[2]);
$calcula2 = mktime(0, 0, 0, $fechaHoy[1], $fechaHoy[0], $fechaHoy[2]);
$diferencia = ceil(($calcula2 - $calcula1)/86400); //dias entre el comienzo del curso y hoy 86400=segundos en un dia
$semanaDiff = abs(date('W',mktime(0, 0, 0, $mkCurso[1], $mkCurso[0], $mkCurso[2])) - $semanaAno); // semanas entre el comienzo y hoy
$x = 0;
$contar = 0;
while($x <= $semanaDiff){
if($semanaDiff == $x){
foreach ($diasCurso as $dia){
if($dia <= $diaSemana){
for($a=0;$a<$numDias;$a++){
if($dia == $diasCount[$a]){
$contar++;
}
}
}
}
}else{
foreach ($diasCurso as $dia){
for($a=0;$a<$numDias;$a++){
if($dia == $diasCount[$a]){
$contar++;
}
}
}
}
$x++;
}
//Esto es nuevo con respecto al código de Marvin///////////////////////////
$resta=0;
foreach($diasCurso as $dia){
if($dia<$diaComienzo)$resta++; }
return $contar-$resta;
///////////////////////////////////////////////////////////////
}