28/09/2009, 00:45
|
|
Respuesta: Problema con fechas Cita:
Iniciado por Marvin 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 |