note 53710 deleted from ref.datetime by betz

From: Date: Fri, 10 Jun 2005 04:59:26 +0000
Subject: note 53710 deleted from ref.datetime by betz
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-90206@lists.php.net to get a copy of this message
Note Submitter: WiChO Reason: useless ---- Esta funcion devuelve un arreglo de todas las semanas del año, especificando, dia inicio y dia final, asi como el mes. Espero que les sea de utilidad (Solo la probe para el 2004 y 2005, un año bisiesto y otro no bisiesto) <?php function getWeeks($anioActual) { $t = mktime(0,0,0,1,1,$anioActual); //marca de tiempo de año actual $fecha = getdate($t); //informacion sobre la fecha del primer dia del año $semanas = array(); $semInfo = array(); $curMon = 1; $curDay = 1; $curYear = $anioActual; $primerDia = mktime (0,0,0,$curMon,1,$anioActual); //primer dia del año actual $maxdias = date('t',mktime (0,0,0,12,1,($anioActual-1))); //numero de dias, diciembre año anterior //en caso de que el año no empieze en domingo if ($fecha['wday']!=0) { //primera semana empieza en domingo año anterior $curDay = $maxdias - ($fecha['wday']-1); $curMon = 12; $curYear = $anioActual-1; } while (!$lastWeek) { $semInfo['id'] = $curDay; //primer dia de la semana $maxdias = date('t',mktime (0,0,0,$curMon,1,$curYear)); //numero de dias del mes presente for ($i=1;$i<7;$i++) { $curDay++; //incremento el dia actual, hasta llegar a sabado if ($curDay>$maxdias) //si el mes no termina en sabado { if ($curMon == 12) //verifico si este mes es diciembre, empiezo en enero del año siguiente { $curYear++; $curMon = 1; }else { $curMon++; } //sino, solo sigo con el otro mes $curDay=1; //primer dia del mes } } $semInfo['ld'] = $curDay; //ultimo dia de la semana $curDay++; //me paso a la otra semana if ($curDay>$maxdias) //verifico siempre si, me toca cambiar de año o mes { if ($curMon == 12) //verifico si este mes es diciembre, empiezo en enero del año siguiente { $curYear++; $curMon = 1; }else { $curMon++; } //sino, solo sigo con el otro mes $curDay=1; //primer dia del mes } $semInfo['mon'] = $curMon; //mes para esta semana $semanas[]=$semInfo; //agrego esta semana al arreglo $semInfo = array(); if ($curYear>$anioActual) //si el año que estoy es mayor que el año actual, obtuve todas las semanas $lastWeek=true; } return $semanas; //devuelvo el arrego de semanas } ?> Pueden acceder al arreglo asi: (muestra todas las semanas de este año) <?php $semanas = getWeeks(2005); $k = 1; foreach ($semanas as $semInfo) { echo "Semana: ".$k." Dia Inicio :".$semInfo['id']." Dia Final :".$semInfo['ld']." Mes :".$semInfo['mon']."<BR>\n"; $k++; } ?>

« previous php.notes (#90206) next »