- str_pad: documentation ( source)
<?php
$dateMonth = '2013-08';
$dateFirstDay = new DateTime($dateMonth . '-01');
$dayOfWeekFirstDay = $dateFirstDay->format('w');
$nofDaysInMonth = $dateFirstDay->firmat('t');
$daysOfWeek = array(
0 => 'Sun',
1 => 'Mon',
2 => 'Tue',
3 => 'Wed',
4 => 'Thu',
5 => 'Fri',
6 => 'Sat'
);
$currentDayOfWeek = $dayOfWeekFirstDay;
foreach($daysOfWeek as $dayName) {
echo $dayName . "\t";
}
echo "\n";
if ($currentDayOfWeek != 1) {
$skipFirstDays = (0 == $currentDayOfWeek ? 6 : $currentDayOfWeek-1);
echo str_pad('', $skipFirstDays, " \t");
}
for ($curDay = 1; $curDay <= $nofDaysInMonth; $curDay++, $currentDayOfWeek++) {
if ($currentDayOfWeek == 7) {
$currentDayOfWeek = 0;
}
$isWeekEnd = false;
if ($currentDayOfWeek == 6 || $currentDayOfWeek == 0) {
$isWeekEnd = true;
}
if (!$isWeekEnd) {
echo $curDay . "\t";
}
else {
echo "[" . $curDay . "]\t";
}
if ($currentDayOfWeek == 0) {
echo "\n";
}
}