本文最后更新于871 天前,其中的信息可能已经过时,如有错误请评论留言
我将万年历生成封装一个函数,以便你可以在你想要用到的地方调用这个函数生成万年历
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>万年历</title>
<style>
.box {
margin: 10px;
display: grid; /* 网格布局 */
grid-template-rows: repeat(3, 1fr); /* 创建 3 行,每行的宽度都是容器宽度的 1/3 */
grid-template-columns: repeat(4, 1fr); /* 创建 4 列,每列的宽度都是容器宽度的 1/4 */
gap: 35px; /* 指定网格项之间的水平和垂直间距都为 10px */
}
table {
border-spacing: 0 8px; /* 设置列(水平)间距为 0,行(竖直)间距为 8px */
}
th {
background: #999;
height: 30px; /* 不知道为什么有个别 th 上下高度比其他的窄,就设置了 height 统一高度,如果知道原因恳请留言告诉我 */
font-size: 25px;
}
</style>
</head>
<body>
<?php
function calendar($y)
{
$html = '<div class="box">';
$w = date('w',strtotime("$y-1-1")); # 获取指定年份的 1 月 1 日是星期几,0 表示星期日
for ($m = 1;$m <= 12;$m++){ # 输出 12 个月份的 12 个表格
$html .= "<table><tr><th colspan='7'>{$y}年{$m}月</th></tr>
<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>";
$dOfM = date('t',strtotime("$y-$m")); # 获取当前月份 $m 最多是多少天
$html .= '<tr>';
for($d = 1;$d <= $dOfM;$d++){
if($w && $d == 1) $html .= "<td colspan='$w'></td>"; # 如果该月的第一天不是星期天,则使用合并列的方式在前面填充空白
$html .= "<td>$d</td>";
if($w == 6 && $d != $dOfM) $html .= '</tr><tr>'; # 如果星期六不是该月的最后一天,则表格此行结束并开始下一行
elseif ($d == $dOfM) $html .= '</tr>'; # 是该月最后一天,则闭合行 tr 标签
$w = ($w + 1 > 6) ? 0 : $w + 1;
}
$html .= '</table>';
}
$html .= '</div>';
return $html;
}
echo calendar('2024');
?>
</body>
</html>
效果如下:

这样,万年历就写好了,你可以传入年份看到那一年的各月日历,也可以按个人喜欢调整显示的样式,还可以增加新的功能或者与其他功能联动,快去试试吧!



