php 万年历

<?php
	header('Content-type:text/html;charset=utf-8');
	error_reporting(E_ALL & ~E_NOTICE);
	$year = $_GET['y']?$_GET['y']:date('Y')+0;
	$month = $_GET['m']?$_GET['m']:date('m')+0;

	$dd = date('t',mktime(0,0,0,$month)); //本月一共有多少天
	$w = date('w',mktime(0,0,0,$month,1,$year));  //本月的1号是星期几
	if($w === '0')
	{
		$w=7;
	}
	echo '<center>';
	echo '<h1>'.$year.'年'.$month.'月'.'</h1>';
	echo '<table border=1 cellspacing=0>';
	echo '<tr><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th><th>星期日</th></tr>';

//循环输出数据
	//方法一
	// for($i=0;$i<ceil(($dd+$w-1)/7);$i++) //判断输出几行
	// {
	// 	echo '<tr>';
	// 	for($j=1; $j < 8 ; $j++) 
	// 	{
	// 		$day=$i*7-$w+1+$j; //算出对应的天数 
	// 		if($day<=0 ||$day>$dd)
	// 		{
	// 			echo '<td></td>';
	// 		}
	// 		else
	// 		{
	// 			echo '<td>'.$day.'</td>';				
	// 		}

	// 	}
	// 	echo '</tr>';
	// }
	//方法二
	$day =1 ;
	while($day<$dd)
	{
		echo '<tr>';
		for($i=0;$i<7;$i++)
		{
			if($day<$dd &&($day!=1 || $w-1<=$i)) //唯一难点在于 $day!=1 || $w-1<=$i 可以反过来理解 见注①
			{
				echo '<td>'.$day.'</td>';
				$day++;
			}
			else
			{
				//注①
				//$day=1 && $w-1>$i 
				//$day=1 的时候 说明是第一行的时候,也就是刚开始写入数据
				//如果 1号是 星期一 则不需要输入空格 $w=1  1要大于 $i(0) 就要 减去 1 所以 $w-1>$i
				//然后反过来,符号取反 && => ||   ,  =   =>  !=   ,  >  =>  <=
				echo '<td></td>';
			}
		}
		echo '</tr>';
	}
	echo '</table>';

//上一页 下一页
	$previousy = $nexty =$year;
	$previousm = $month-1;
	$nextm = $month+1;
	if($previousm<1)
	{
		$previousm=12;
		$previousy-=1;
	}else if($nextm>12)
	{
		$nextm=1;
		$nexty+=1;
	}
	echo "<a href='4.php?y={$previousy}&m={$previousm}'>上个月</a>      ";
	echo "<a href='4.php?y={$nexty}&m={$nextm}'>下个月</a>";
	echo '</center>';
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值