Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/09/2009, 00:45
Banshi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con fechas

Cita:
Iniciado por Marvin Ver Mensaje
No existe una funcion predefinida para eso... pero puedes intentar con esto:
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){
    
$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])); //este dia
    
    
$calcula1 = mktime(0, 0, 0, $mkCurso[1], $mkCurso[0], $mkCurso[2]);
    
$calcula2 = mktime(0, 0, 0, $fechaHoy[1], $fechaHoy[0], $fechaHoy[2]);
    
    
$diferencia = (intval($calcula2 - $calcula1))/24/60/60; //dias entre el comienzo del curso y hoy
    
    
$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++;
    }
    
    return 
$contar;
} 
No esta completamente testeada asi que si falta algo puedes probar y arreglarlo.

Suerte!
Funciona perfectamente, muchas gracias
EDITO: He comprobado la función en más casos y falla :S

Última edición por Banshi; 30/09/2009 a las 02:29