日历功能的实现要点包括:
- 获取当前年份和月份: 使用
date
函数获取当前的年份和月份。
$year = date("Y"); $month = date("m");
- 确定当前月份的第一天是星期几: 使用
date
函数和w
格式参数获取当前月份的第一天是星期几。
$firstDayOfWeek = date("w", strtotime("$year-$month-1"));
- 获取当前月份的总天数: 使用
date
函数和t
格式参数获取当前月份的总天数。
$totalDays = date("t", strtotime("$year-$month-1"));
- 生成日历表格的头部: 输出HTML表格的头部,包括表格标题和星期的标题。
echo "<table border='1'>"; echo "<thead><tr><th colspan='7'>{$year}年{$month}月</th></tr>"; echo "<tr><th>周日</th><th>周一</th><th>周二</th><th>周三</th><th>周四</th><th>周五</th><th>周六</th></tr></thead>"; echo "<tbody>";
- 生成日历表格的主体: 输出HTML表格的主体,包括日期和空白格子。
echo "<tr>"; for ($i = 0; $i < $firstDayOfWeek; $i++) { echo "<td></td>"; } for ($day = 1; $day <= $totalDays; $day++) { // 输出日期 echo "<td>{$day}</td>"; // 换行,开始新的一行 if(($day + $firstDayOfWeek - 1) % 7 == 0) { echo "</tr><tr>"; } } // 输出空白格子,填满最后一行for ($i = 0; ($totalDays + $firstDayOfWeek) % 7 !== 0; $i++) { echo "<td></td>"; } echo"</tr></tbody></table>";
这些要点涵盖了从获取日期信息到生成HTML表格的整个过程。你可以根据需要进行修改,例如显示特定年份和月份的日历,或者改变样式和布局。
以下是一个简单的例子,显示当前月份的日历:
<?php
// 获取当前年份和月份
$year = date("Y");
$month = date("m");
// 获取当前月份的第一天是星期几
$firstDayOfWeek = date("w", strtotime("$year-$month-1"));
// 获取当前月份的总天数
$totalDays = date("t", strtotime("$year-$month-1"));
// 输出日历表格的头部
echo "<table border='1'>";
echo "<thead><tr><th colspan='7'>{$year}年{$month}月</th></tr>";
echo "<tr><th>周日</th><th>周一</th><th>周二</th><th>周三</th><th>周四</th><th>周五</th><th>周六</th></tr></thead>";
echo "<tbody>";
// 输出日历表格的主体
echo "<tr>";
// 输出空白格子,直到第一天的位置
for ($i = 0; $i < $firstDayOfWeek; $i++) {
echo "<td></td>";
}
// 输出日期
for ($day = 1; $day <= $totalDays; $day++) {
// 换行,开始新的一行
if (($day + $firstDayOfWeek - 1) % 7 == 0) {
echo "</tr><tr>";
}
echo "<td>{$day}</td>";
}
// 输出空白格子,填满最后一行
for ($i = 0; ($totalDays + $firstDayOfWeek) % 7 !== 0; $i++) {
echo "<td></td>";
}
echo "</tr></tbody></table>";
?>
这个简单的PHP脚本会生成一个包含当前月份日历的HTML表格。你可以将其保存为.php文件,然后在浏览器中运行该文件,即可看到生成的日历。请注意,此示例中仅显示当前月份的日历,你可以根据需要进行修改,以显示特定年份和月份的日历。
标签:输出,表格,firstDayOfWeek,日历,echo,date,php,day From: https://blog.51cto.com/u_14540126/9134034