自己写的一个日历程序

类似于很多blog左边的那个日历程序。

刚学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>";
}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值