PHP 输出月份日期,按周排列,

By | 2012 年 8 月 31 日

$year = array("1"=>31, "2"=>28, "3"=>31, "4"=>30, "5"=>31, "6"=>30, "7"=>31, "8"=>31, "9"=>30, "10"=>31, "11"=>30, "12"=>31);

$yue=$_GET["t"];
$nian=$_GET["y"];
if(!$yue) $yue=date(n);
if(!$nian) $nian=date(Y);
if($nian%4==0) $year[2]=29;

//构造一个数值,$result_date,作为计算数据的日期范围
$result_date=array();
$x=0;
//本月月初星期几
$w=date(w,mktime(0,0,1,$yue,1,$nian));
//补全一周日期---黑灰色
if($w==0) $before=6;
else $before=$w-1;//计算差了几天为一周,0~6,查几天循环几次
$before_n=$yue-1;//上一个月的月份
$before_y=$nian;
if($yue==1) {$before_n=$year["12"];//1月上一个月为12月。
$before_y=$nian-1;}
$before_day=$year[$before_n]-$before+1;//上个月最后一个周一的日期。
for($i=0;$i<$before;$i++){
$this_day=$before_y.'-'.$before_n.'-'.$before_day;
$result_date[$x]=$this_day;
if(date(w,strtotime($result_date[$x]))==6 or date(w,strtotime($result_date[$x]))==0) echo "<td class='td3' style='color:red;background:#f4f4f4;'>".$before_day."</td>";
else echo "<td class='td3' style='color:#ccc;'>".$before_day."</td>";
$x++;
$before_day++;
}
//循环输出这个月的日期。
for($i=1;$i<=$year[$yue];$i++){
$this_day=$nian.'-'.$yue.'-'.$i;
$result_date[$x]=$this_day;
if(date(w,strtotime($result_date[$x]))==6 or date(w,strtotime($result_date[$x]))==0) echo "<td class='td3' style='color:red;background:#f4f4f4;'>".$i."</td>";
else echo "<td class='td3'>".$i."</td>";
$x++;
}
//本月月末星期几
$w_end=date(w,mktime(0,0,1,$yue,$year[$yue],$nian));
//补全一周日期---黑灰色
$w_end=7-$w_end;//计算差了几天为一周,0~6,查几天循环几次
$after_day=1;
$after_n=$yue+1;
$after_y=$nian;
if($yue==12) {$after_n=1;$after_y=$nian+1;}
for($i=0;$i<$w_end;$i++){
$this_day=$after_y.'-'.$after_n.'-'.$after_day;
$result_date[$x]=$this_day;
if(date(w,strtotime($result_date[$x]))==6 or date(w,strtotime($result_date[$x]))==0) echo "<td class='td3' style='color:#49aed8;background:#f4f4f4;'>".$after_day."</td>";
else echo "<td class='td3' style='color:#ccc;'>".$after_day."</td>";
$x++;
$after_day++;
}
echo"</tr>";

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据