使用PHP制作一个好看又简洁的万年历
时间: 2024-03-11 15:49:44 浏览: 23
以下是一个使用 PHP 制作的好看又简洁的万年历:
```php
<?php
// 获取指定年月的日历数组
function getCalendarArray($year, $month) {
$daysInMonth = date('t', mktime(0, 0, 0, $month, 1, $year));
$firstDayOfWeek = date('w', mktime(0, 0, 0, $month, 1, $year));
$lastDayOfWeek = date('w', mktime(0, 0, 0, $month, $daysInMonth, $year));
$calendarArray = array();
$day = 1;
for ($i = 0; $i < 6; $i++) {
$week = array();
for ($j = 0; $j < 7; $j++) {
if ($i == 0 && $j < $firstDayOfWeek) {
$week[] = '';
} else if ($day > $daysInMonth) {
$week[] = '';
} else {
$week[] = $day;
$day++;
}
}
$calendarArray[] = $week;
if ($day > $daysInMonth) {
break;
}
}
return $calendarArray;
}
// 输出日历 HTML 代码
function outputCalendar($year, $month) {
$calendarArray = getCalendarArray($year, $month);
$monthName = date('F', mktime(0, 0, 0, $month, 1, $year));
$prevMonthYear = $month == 1 ? $year - 1 : $year;
$prevMonthMonth = $month == 1 ? 12 : $month - 1;
$nextMonthYear = $month == 12 ? $year + 1 : $year;
$nextMonthMonth = $month == 12 ? 1 : $month + 1;
$html = '<table class="calendar">';
$html .= '<caption>' . $monthName . ' ' . $year . '</caption>';
$html .= '<thead><tr>';
$html .= '<th scope="col">Sun</th>';
$html .= '<th scope="col">Mon</th>';
$html .= '<th scope="col">Tue</th>';
$html .= '<th scope="col">Wed</th>';
$html .= '<th scope="col">Thu</th>';
$html .= '<th scope="col">Fri</th>';
$html .= '<th scope="col">Sat</th>';
$html .= '</tr></thead>';
$html .= '<tbody>';
foreach ($calendarArray as $week) {
$html .= '<tr>';
foreach ($week as $day) {
if ($day == '') {
$html .= '<td class="blank"> </td>';
} else {
$html .= '<td>' . $day . '</td>';
}
}
$html .= '</tr>';
}
$html .= '</tbody>';
$html .= '<tfoot><tr><td colspan="7">';
$html .= '<a href="?year=' . $prevMonthYear . '&month=' . $prevMonthMonth . '"><</a>';
$html .= '<a href="?year=' . $nextMonthYear . '&month=' . $nextMonthMonth . '">></a>';
$html .= '</td></tr></tfoot>';
$html .= '</table>';
return $html;
}
// 获取当前年月
if (isset($_GET['year']) && isset($_GET['month'])) {
$year = intval($_GET['year']);
$month = intval($_GET['month']);
} else {
$year = date('Y');
$month = date('n');
}
// 输出日历
echo outputCalendar($year, $month);
?>
```
这段代码定义了两个函数:
- `getCalendarArray($year, $month)`:输入年份和月份,返回一个二维数组,表示该月份的日历。
- `outputCalendar($year, $month)`:输入年份和月份,返回一个 HTML 表格表示的日历。
这个日历的特点是:
- 使用 CSS 样式控制表格样式,使其看起来更加美观。
- 在日历上方加入了一个标题,表示当前年份和月份。
- 在日历下方加入了一个分页,可以直接跳转到上一个月或下一个月。