Skip to content

Instantly share code, notes, and snippets.

@alrik11es
Created May 13, 2012 20:48
Show Gist options
  • Save alrik11es/2690112 to your computer and use it in GitHub Desktop.
Save alrik11es/2690112 to your computer and use it in GitHub Desktop.
Dibujado de un calendario en PHP del año indicado.
<?php
function drawCalendar($year = null){
$cal = '';
$month_name = array('','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
if($year == null)
$year = date('Y');
for($month = 1; $month<=12; $month++){
$dia = 1;
$time = mktime(0, 0, 0, $month, $dia, $year);
$time_t = $time;
$cal .= '<table class="month">';
$cal .= '<tr><td colspan="9" class="month-title"><b>'.$month_name[$month].'</b></td></tr>';
$cal .= '<tr><td colspan="2"></td><td>L</td><td>M</td><td>X</td><td>J</td><td>V</td><td>S</td><td>D</td></tr>';
for($fila=1; $fila<=6; $fila++){
// Quito las semanas vacías en la medida de lo posible
if($dia < date('t',$time)){
$cal .= '<tr>';
$cal .= '<td class="weeknum">'.date('W',$time_t).'ª</td><td style="width: 5px;"></td>';
if($fila == 1)
$primera_columna_start = date('N', $time);
// Días en la semana
for($columna=1; $columna<=7; $columna++){
// Si la columna es menor que la primera columna correspondiente al día del mes no la pintes
if($columna < $primera_columna_start && $fila == 1)
$cal .= '<td></td>';
else
if($dia <= date('t', $time)){
// Estilo del fin de semana
if(date('N', $time_t)>=6)
$weekend = ' class="weekend"';
else
$weekend = '';
// Indico el día
$cal .= '<td'.$weekend.'>'.$dia.'</td>';
// Sumo un día mas
$dia++;
$time_t = mktime(0, 0, 0, $month, $dia, $year);
}
}
$cal .= '</tr>';
}
}
$cal .= '</table>';
}
return $cal;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment