Ver Mensaje Individual
  #6 (permalink)  
Antiguo 01/10/2009, 05:18
Avatar de Tokkara
Tokkara
 
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 18 años, 4 meses
Puntos: 5
Respuesta: Problema con fechas

Creo que así es más facil

Código PHP:
$fechaCurso = '12-03-2009'; //fecha de inicio del curso
$diasCurso = array('2','4'); //Martes y Jueves
$hoy = '16-06-2009'; //fecha ficticia de hoy

echo calculaDiasCursos($hoy,$fechaCurso,$diasCurso);


function 
calculaDiasCursos($hoy,$fechaCurso,$diasCurso)
{

  
//Pasamos las fechas a timestamp de Unix.
  
$hoy = explode('-', $hoy);
  
$fecha = explode('-', $fechaCurso);
  
$hoy = mktime(0, 0, 0, $hoy[1], $hoy[0], $hoy[2]);
  
$fecha = mktime(0, 0, 0, $fecha[1], $fecha[0], $fecha[2]);

  
//Extraemos las semanas completas que hay entre las 2 fechas
  
$diff = $hoy-$fecha;
  
$dias_de_diferencia = floor($diff/(24*3600));
  
$semanas_de_diferencia = floor($dias_de_diferencia/7);


  
//Contamos los días de cursos en esas semanas completas
  
$dias = $semanas_de_direfrencia *sizeof($diasCurso);

  
//Ahora contamos la semana incompleta
  
$diasSemana =  $dias_de_diferencia%7;
  
if($diasSemana > 0)
  {

    foreach(
$diasCurso as $d)
    {
      
//si el actual es mayor que el día del curso sumamos uno, sino los dias del curso son mayores que el dia actual. Salimos del bucle
      
if($diasSemanas > $d) $dias++;
      else break;
    }
  }

  return 
$dias;
} 
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.
__________________
Revolucionario controlador de plantillas para php
www.simphple.com