本文实例讲述了php实现的日历程序。分享给大家供大家参考。具体如下:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
<?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> </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> <?php echo $Year ?> <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> </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> <?php echo $Month ;?> <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> " . $Weekvalue . " </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 . "> " . $u1 . $Dayvalue . $u2 . " </font></td>" ; //用本周第几天这个值加1,如果是7的倍数就换行退出此轮循环(换行打印) if (( $DayWeek +1) % 7 == 0) { $col ++; break ; } } echo "</tr>" ; } ?> |
运行效果如下:
希望本文所述对大家的php程序设计有所帮助。