和大家分享一个简易的万年历制作过程。
基本要求:
1.获取日期
2.获取给定日期是几号
3.获取给定日期是周几
立即学习“PHP免费学习笔记(深入)”;
4.获取月份天数
5.获取上一月和下一月
先贴一张效果图,样式做的比较丑,不喜勿喷。

php代码:
<?php
//修改字符编码
header("content-type:text/html;charset=utf-8");
//外部样式链接
echo "<link rel='stylesheet' type='text/css' href='calendar.css'/>";
//获取当前年
$year=$_GET['Y']?$_GET['Y']:date('Y');
//获取当前月
$month=$_GET['m']?$_GET['m']:date('m');
//获取当月有多少天
$days=date('t',strtotime("{$year}-{$month}-1"));
//当前是周几
$week=date('w',strtotime("{$year}-{$month}-1"));
//内容居中显示
echo "<center>";
//打印表头
echo "<h1>{$year}年{$month}月</h1>";
//打印日期表格
echo "<table>";
//打印星期
echo "<tr>";
echo "<th>周日</th>";
echo "<th>周一</th>";
echo "<th>周二</th>";
echo "<th>周三</th>";
echo "<th>周四</th>";
echo "<th>周五</th>";
echo "<th>周六</th>";
echo "</tr>";
//打印几号
for($i=1-$week;$i<=$days;){
echo "<tr>";
for($j=0;$j<7;$j++){
if($i>$days||$i<1){
echo "<td> </td>";
}else{
echo "<td>$i</td>";
}
$i++;
}
echo "</tr>";
}
echo "</table>";
//上一月和下一月算法
if($month==1){
$prevyear=$year-1;
$prevmonth=12;
}else{
$prevyear=$year;
$prevmonth=$month-1;
}
if($month==12){
$nextyear=$year+1;
$nextmonth=1;
}else{
$nextyear=$year;
$nextmonth=$month+1;
}
//上一月和下一月的超链接
echo "<h2>上一月&下一月</h2>";
echo "</center>";
?>table{
width:500px;
height:300px;
border:red dashed 1px;
background:#ff00ff;
}
tr{
text-align:center;
}
td{
border:gray dotted 1px;
}
h1{
font-style:italic;
font-size:50px;
font-family:'宋体';
}
h2 a{
font-style:normal;
font-size:40px;
font-family:'黑体';
color:purple;
}
/*组合选择器*/
tr,td,th{
font-size:20px;
background:gray;
}
1.strtotime()中所计算的时间戳应该是完整的一个格式,把一个单独的年或月放进去是没有用的。
2.if语句中的条件里面,不是赋值,是等于!!!,要写 两个==。这地方太容易给忽略了。
3.原本打印的日期一直都是周日和一号对应。但是月份不同,这个日期和星期的对应关系也会有所改变,所以,在for循环中将$i-$week.就可以将当月的所有日期后退一定时间,达到日期与星期的完美对应。
4.在实现上一月和下一月的功能时,将几个变量作为参数带入,再配合一定的算法就能搞定了。具体的就看代码吧,文字也得再好也不如看两行代码效果好。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号