php制作年历

日历是一种记载日期等相关信息的表格,通常每页显示一日信息的叫作日历,每页显示一个月信息的叫作月历,每页显示全年信息的叫作年历。从日历诞生至今,它有多种的呈现形式,例如挂历、台历、年历卡、电子日历、万年历等。。

【功能分析】

在日常生活中,人们在做旅程规划、行程安排和工作计划时都离不开日历。

.定义 calendar ()函数用于生成年历 HTML 表格。

.根据函数参数传入的指定年份生成对应的年历。.获取指定年份的第1天是星期几。

.获取每个月份的最大天数。

.按照"日、一、二、三、四、五、六"的星期格式进行展示。

【功能实现】

1,定义生成年历的函数

<?php

function calender($y)

{ $html ='<div class="box">';//输出12个月份的表格

$html ='</div>';

return $html;}

echo calender('2022');

2,拼接每个月份的表格·

for ($m = 1;$m<=12;++$m){

$html .='<table border=1>';

$html .='<tr><th colspen="7">' . $y. '年' . $m.'月</th></th>';

$html .= '<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>';

$html .='</table>';}

3.获取指定年份的第1天是星期几

$w=date('w',strtotime("$y-1-1"));

4.遍历制定月份中的每一天

@$max = date('t', "$y-$m");

//获取当前月份m共有多少天

5.拼接年历中的日期

$html .= '<tr>';

for ($d = 1; $d <= $max; ++$d)

{

if ($w && $d == 1) {//如果该月的第一天不是星期日,则填充空白

$html .= "<td colspan=\"$w\"></td>";

}

$html.="<td>$d</td>";

if($w==6&&$d!=$max){

$html.='</tr><tr>';

}elseif($d==$max){

$html.='</tr>';

}

$w=($w+1>6)?0:$w+1;

}

完整代码如下:

<!doctype html>

<html>

<head>

<title>制作年历</title>

<style>

body { text-align: center; }

.box { margin: 0 auto; width: 880px; }

table { height: 200px; width: 200px; font-size: 12px; text-align: center; float: left; margin: 10px; font-family: arial; }

table tr:first-child { background: #ccc; }

</style>

</head>

<body>

<?php

function calendar($y)

{

$w = date('w', strtotime("$y-1-1"));

$html = '<div class="box">';

// 输出12个月份的表格

for ($m = 1; $m <= 12; ++$m) {

$html .= '<table>';

$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>';

// 获取当前月份$m共有多少天

$max = date('t', strtotime("$y-$m"));

$html .= '<tr>'; // 开始<tr>标签

for ($d = 1; $d <= $max; ++$d) {

if ($w && $d == 1) { // 如果该月的第1天不是星期日,则填充空白

$html .= "<td colspan=\"$w\"> </td>";

}

$html .= "<td>$d</td>";

if ($w == 6 && $d != $max) { // 如果星期六不是该月的最后一天,则换行

$html .= '</tr><tr>';

} elseif ($d == $max) { // 该月的最后一天,闭合<tr>标签

$html .= '</tr>';

}

$w = ($w + 1 > 6) ? 0 : $w + 1;

}

$html .= '</table>';

}

$html .= '</div>';

return $html;

}

echo calendar('2023');

?>

</body>

</html>

  • 18
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值