PHP实例————万年历

来源:互联网 发布:Ubuntu16安装Apache 编辑:程序博客网 时间:2024/04/28 14:44

和大家分享一个简易的万年历制作过程。

基本要求:

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.在实现上一月和下一月的功能时,将几个变量作为参数带入,再配合一定的算法就能搞定了。具体的就看代码吧,文字也得再好也不如看两行代码效果好。


2 0
原创粉丝点击