Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/10/2009, 09:09
Banshi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con fechas

Cita:
Iniciado por Tokkara Ver Mensaje

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(000$fechaHoy[1], $fechaHoy[0], $fechaHoy[2])); //esta semana

    
$diaSemana date('N',mktime(000$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(000$mkCurso[1], $mkCurso[0], $mkCurso[2])); //Día de comienzo
/////////////////////////////////////////////////////////////////////       
    
$calcula1 mktime(000$mkCurso[1], $mkCurso[0], $mkCurso[2]);

    
$calcula2 mktime(000$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(000$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;
///////////////////////////////////////////////////////////////