您的位置:首页 > 编程语言 > PHP开发

PHP实例————万年历

2014-09-07 16:00 411 查看
和大家分享一个简易的万年历制作过程。

基本要求:

1.获取日期

2.获取给定日期是几号

3.获取给定日期是周几

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><a href='indextest.php?Y={$prevyear}&m={$prevmonth}'>上一月</a>&<a href='indextest.php?Y={$nextyear}&m={$nextmonth}'>下一月</a></h2>";

echo "</center>";
?>

CSS代码:
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 css 万年历