Problema en php

Como hago para que me acepte cualquier fecha
ejem no me acepta del otros años mas adelante ,solo anterior me acepta
este es mi codigo
<?php
date_default_timezone_set('UTC');
$meses = array(1 =>'ENERO',2 =>'FEBRERO',3 =>'MARZO',4 =>'ABRIL',5 =>'MAYO',6 =>'JUNIO',7 =>'JULIO',8 =>'AGOSTO',9 => 'SETIEMBRE',10 =>'OCTUBRE',11 => 'NOVIEMBRE',12 => 'DICIEMBRE');
$semanas = array(1 =>'Lunes',2 =>'Martes',3 =>'Miercoles',4 =>'Jueves',5 =>'Viernes',6 =>'Sabado',7 =>'Domingo');
echo "HOY ES ".$semanas[date(N)].date(d). " de ".$meses[(int)date(m)]." de ".date(Y)."..............dia de semana es ". Date(N,mktime(0,0,0,07,22,2011)).'<br>'; // obtengo el dia de la demana
$vmes=8;
$vanio=2011;
$totaldia=numerodias($vanio,$vmes); //el formato es año y mes para obtener el numero de dias
for ($a=1;$a<=$totaldia;$a++)
{
$dias=date(N,mktime(0,0,0,$vmes,$a,$vanio));
echo $semanas[$dias].' '.$a.' ';
}
function numerodias($xyear,$xmes)
{
if (((fmod($xyear,4)==0) and (fmod($xyear,100)!=0)) or (fmod($xyear,400)==0)) {
$febrero = 29;
} else {
$febrero = 28;
}
switch($xmes)
{
case 01: return 31; break;
case 02: return $febrero; break;
case 03: return 31; break;
case 04: return 30; break;
case 05: return 31; break;
case 06: return 30; break;
case 07: return 31; break;
case 08: return 31; break;
case 09: return 30; break;
case 10: return 31; break;
case 11: return 30; break;
case 12: return 31; break;
}
}
?>

Añade tu respuesta

Haz clic para o