这篇文章主要介绍了 php 实现的日历程序, 可实现基本的日历显示与实时查询功能, 非常具有实用价值, 需要的朋友可以参考下
本文实例讲述了 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("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
- $Weekday_count = count($Weekday);
- $daynum = 0;
- $space = " ";
- $col = 0;
- //// 打印表格头部 ////
- ?>
- <?php
- //// 打印星期列表 ////
- while(list(,$Weekvalue) = each($Weekday))
- echo "";
- echo "";
- //// 打印日期列表 ////
- // 当月份为 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 "";
- 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 = "";
- $u2 = "";
- }
- else
- {
- $u1 = "";
- $u2 = "";
- }
- if($DayWeek == 0 or $DayWeek == 6)
- $color = "red";
- else
- $color = "black";
- echo "";
- // 用本周第几天这个值加 1, 如果是 7 的倍数就换行退出此轮循环 (换行打印)
- if(($DayWeek+1) % 7 == 0)
- {
- $col++;
- break;
- }
- }
- echo "";
- }
- ?>
来源: https://www.php1.cn/detail/php-ae4486695e.html