<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>年日历</title>
<style>
#container{
display: flex;
justify-content: space-around;
flex-wrap: wrap;
border: 1px solid deepskyblue;
overflow: hidden;
padding-bottom: 20px;
}
table{
width: 15%;
padding-bottom: 20px;
margin-top: 20px;
}
th{
background-color: gray;
padding-bottom: 20px;
}
td{
text-align: center;
}
</style>
</head>
<body>
<div id="container">
<?php
//处理一个第一天是周几
function whatWeek($d,$firstWeek,&$html){
if ($d == 1){
for ($i = 0 ;$i < $firstWeek;$i++){
$html .= '<td> </td>';
}
}
}
//判断闰年
function isLeapYear($y){
return $y % 400 == 0 || ($y % 4 == 0 && $y % 100 != 0);
}
//输出日期
function printDate($sumDay,&$html,$firstWeek,&$lastWeek){
for ($d = 1 ; $d <= 6 ;$d++){
$html .= '<tr>';
whatWeek($d,$firstWeek,$html);
for ($day = ($d == 1 ? ($d-1)*7+1 : ($d-2)*7+1+6-$firstWeek+1) ;$day <= ($d-1)*7+1+6-$firstWeek;$day++){
$html .= "<td>$day</td>";
if ($day == $sumDay){
$lastWeek = ($day+$firstWeek) % 7;
break 2;
}
}
$html .= '</tr>';
}
}
//生成日历
function calendar($y){
$firstWeek = date('N',mktime(0,0,0,1,1,$y));//当月第一天是周几
$lastWeek = 0;//当月最后一天是周几
$html = '';//日历页面
for ($m = 1 ; $m <= 12 ;$m++){
$html .= '<table border="1">';
$html .= '<tr><th colspan="7">'.$y.'年'.$m.'月'.'</th></tr>';
$html .= '<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>';
if ($m == 1||$m==3||$m==5||$m==7||$m==8||$m==10||$m==12){
$sumDay = 31;//大月31天
printDate($sumDay,$html,$firstWeek,$lastWeek);
}else if($m == 2){
$sumDay = isLeapYear($y) ? 29 : 28; //闰年29天,平年28天
printDate($sumDay,$html,$firstWeek,$lastWeek);
}else{
$sumDay = 30;//小月30天
printDate($sumDay,$html,$firstWeek,$lastWeek);
}
$html .= '</table>';
$firstWeek = $lastWeek;
}
return $html;
}
echo calendar(date('Y',time()));
?>
</div>
</body>
</html>
PHP制作年日历
于 2022-03-18 22:16:30 首次发布