Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/09/2009, 08:46
Avatar de Marvin
Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 21 años, 8 meses
Puntos: 81
Respuesta: Problema con fechas

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!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!