sem=array('Sun'=>1,'Mon'=>2,'Tue'=>3,'Wed'=>4,'Thu'=>5,'Fri'=>6,'Sat'=>7); $this->mes=array('1'=>'JANEIRO','2'=>'FEVEREIRO','3'=>'MARÇO','4'=>'ABRIL','5'=>'MAIO','6'=>'JUNHO','7'=>'JULHO','8'=>'AGOSTO','9'=>'SETEMBRO','10'=>'OUTUBRO','11'=>'NOVEMBRO','12'=>'DEZEMBRO'); } function aux($i){//Complementa a tabela com espaços em branco $retval=""; for($k=0;$k < $i;$k++){ $retval.=" "; } return $retval; } /* $dia inteiro de 1 a 31 $mes inteiro de 1 a 12 $ano inteiro de 1901 a 2038 $marca variável que termina se o valor do dia será marcado ou não. Se diferente de zero marca. */ function cria($dia,$mes,$ano,$marca=0){ $this->inicializa(); $verf=date ("d/n/Y", mktime (0,0,0,$mes,$dia,$ano));/*Corrige qualquer data invalida*/ $pieces=explode("/",$verf); $dia=$pieces[0]; $mes=$pieces[1]; $ano=$pieces[2]; $last=date ("d", mktime (0,0,0,$mes+1,0,$ano));/*Inteiro do ultimo dia do mês*/ $diasem=date ("D", mktime (0,0,0,$mes,1,$ano));/*String com dia da semana em inglês*/ if($this->sem[$diasem] != 1){/*Se dia semana diferente de domingo,completa com colunas em branco*/ $valor=$this->sem[$diasem]-1; $str="".$this->aux($valor); } for($i=1;$i < ($last+1);$i++){ $diasem=date ("D", mktime (0,0,0,$mes,$i,$ano)); if($this->sem[$diasem] == 1){/*Se domingo,a data recebe uma coloração diferente e inicia nova linha na tabela.*/ $str.=""; $s="$i"; }else{ $s="$i"; } if($marca != 0){ if($dia == $i){ $s="$s"; } } $str.="$s"; if($this->sem[$diasem] == 7){//Se for sabado fecha linha. $str.=""; } } $diasem=date ("D", mktime (0,0,0,$mes,$last,$ano)); if($this->sem[$diasem] != 7){/*Se dia da semana diferente de sábado,completa a tabela com espaços vazios*/. $valor=7-$this->sem[$diasem]; $str=$str.$this->aux($valor).""; } $str="
".$str."
".$this->mes[$mes]." $ano"."
DS TQ QS S
"; echo $str; } } $teste=new calendario; $teste->cria(date("d"),date("n"),date("Y"),1);//Exemplo ?>