php实现的日历程序

时间:2021-05-26

本文实例讲述了php实现的日历程序。分享给大家供大家参考。具体如下:

<?php////判断$Year和$Month是否为空,如果为空就获取系统当前日期,否则用$_GET获取$Year = empty($_GET['Year']) ? date("Y"): $_GET["Year"];$Month = empty($_GET['Month']) ? date("m"): $_GET["Month"];////获取当前日期////$Today = date("Ymj");////初始化日期数组////$Maxday = array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");$Maxday_count = count($Maxday);////初始化星期数组////$Weekday = array("<font color='red'>Sun</font>","Mon","Tue","Wed","Thu","Fri","<font color='red'>Sat</font>");$Weekday_count = count($Weekday);$daynum = 0;$space = "<td>&nbsp;</td>";$col = 0;////打印表格头部////?><form action="calendar.php" method="post" name="linked"><table><tr><td colspan=3 align=center><a href="?Year=<?php if($Year-1 > 1900)echo $Year-1;else echo $Year;?>&Month=<?php echo $Month?>" onClick="javascript:document.linked.submit();" name="Year"><<</a>&nbsp;<?php echo $Year?>&nbsp;<a href="?Year=<?php if($Year+1 <2999) echo $Year+1;else echo $Year;?>&Month=<?php echo $Month?>" onClick="javascript:document.linked.submit();" name="Year">>></a></td><td>&nbsp;</td><td colspan=3 align=center><a href="?Year=<?php echo $Year?>&Month=<?php if($Month-1 >0) if($Month-1 < 10)echo "0".($Month-1); else echo $Month-1; else echo $Month;?>" onClick="javascript:document.linked.submit();" name="Month"><<</a>&nbsp;<?php echo $Month;?>&nbsp;<a href="?Year=<?php echo $Year?>&Month=<?php if($Month+1 <13) if($Month+1 <10) echo "0".($Month+1);else echo ($Month+1); else echo $Month;?>" onClick="javascript:document.linked.submit();" name="Month">>></a></td></tr><tr><td colspan="8"></td></tr><tr><?php////打印星期列表////while(list(,$Weekvalue) = each($Weekday)) echo "<td align=center>&nbsp;".$Weekvalue."&nbsp;</td>";echo "</tr>";////打印日期列表//////当月份为4,6,9,11的时候,从数组末尾删除一个值,也就是删除31这个值.if($Month == 4 or $Month == 6 or $Month == 9 or $Month == 11){ array_pop($Maxday); $Maxday_count--;}//先判断月份是否为2月,如果是的话再判断年份是否为闰年,如果是的话就从数组尾部移除2个值,否则就移除3个值.if($Month == 2){ if($Year % 4 == 0) { array_pop($Maxday); array_pop($Maxday); $Maxday_count-=2; } else { array_pop($Maxday); array_pop($Maxday); array_pop($Maxday); $Maxday_count-=3; }}////打印日期////while($daynum < $Maxday_count){echo "<tr>"; while(list($colnum,$Dayvalue) = each($Maxday)) { //判断当前日期为一星期中的哪一天 $DayWeek = date("w",strtotime($Year."-".$Month."-".$Dayvalue)); //当当前日期处于第1个,也就是每个月的第1天的时候,在它前面补上相应的空格子 if($Dayvalue == 1) for($i=0;$i<$DayWeek;$i++) echo $space;//打印每个月空出的几个格子 $daynum++; //当打印日期的时候与当前日期字符串进行比较,如果相等就将字体标为红色. if($Year.$Month.$Dayvalue == $Today) { $u1 = "<b><u>"; $u2 = "</b></u>"; } else { $u1 = ""; $u2 = ""; } if($DayWeek == 0 or $DayWeek == 6) $color = "red"; else $color = "black"; echo "<td align=center><font color=".$color.">&nbsp;".$u1.$Dayvalue.$u2."&nbsp;</font></td>"; //用本周第几天这个值加1,如果是7的倍数就换行退出此轮循环(换行打印) if(($DayWeek+1) % 7 == 0) { $col++; break; } }echo "</tr>";}?>

运行效果如下:

希望本文所述对大家的php程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章