利用PHP制作的日历实例 - PHP日历

先来看下效果:

白俊遥博客

下面是代码:

<?php
	header("Content-Type:text/html;charset=utf-8");
	date_default_timezone_set("Asia/Shanghai");
	$gety		= isset($_GET["y"])?(int)$_GET["y"]:date('y');//获取年份
	$getm		= isset($_GET["m"])?(int)$_GET["m"]:date('m');//获取月份
	$dq_date 	= new DateTime("$gety-$getm-01");//获取当前月份第一天的时间格式
	$in_date 	= new DateTime();//今天的时间格式
	$year 		= $dq_date->format("Y");//当前的年份
	$month 		= $dq_date->format("m");//当前的月份
	$day 		= $in_date->format("d");//获取今天是几号
	$days		= $dq_date->format("t");//当前月份的总天数
	$week		= $dq_date->format("w");//每个月的一号是星期几
	$before_y	= $year-1; //获取上一年的年份
	$after_y	= $year+1; //获取下一年的年份
	$before_m	= $month-1; //获取上个月的月份
	$after_m	= $month+1; // 获取下个月的月份
	$before_m_y = $after_m_y = $year; //上下月份的链接里面的年份
	//如果上个月的链接里面的月份小于1,年份减一,月份改为12(上一年的最后一个月)
	if($before_m<1){
		$before_m_y = $year-1;
		$before_m = 12;
	}
	//如果下个月的链接里面的月份大于12,年份加一,月份改为1(下一年的第一个月)
	if($after_m>12){
		$after_m_y = $year+1;
		$after_m = 1;
	}
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<title>PHP日历</title>
	<style type="text/css">
		table.hovertable {font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #999999;border-collapse: collapse;text-align:center;}
		table.hovertable th {background-color:#c3dde0;border-width: 1px;padding: 8px;border-style: solid;border-color: #a9c6c9;}
		table.hovertable th a{color:#333333;text-decoration:none;}
		table.hovertable tr {background-color:#d4e3e5;}
		table.hovertable td {border-width: 1px;padding: 8px;border-style: solid;border-color: #a9c6c9;}
		/*今天日期高亮*/
		.ymd<?php echo $in_date->format("Y").$in_date->format("d").$day;?>{background-color:#ffff66;}
		/*今天是几号高亮*/
		.ymd<?php echo $year.$month.$day;?>{background-color:#ffff66;}
	</style>
</head>
<body>
    <table class="hovertable">
		<tr>
			<th><a href="?<?php echo "y={$before_y}&m={$month}";?>"><<上一年</a></th>
			<th>
				<a href="?<?php echo "y={$before_m_y}&m={$before_m}";?>"><<上个月</a>
			</th>
			<th><?php echo $year."-".$month."-".$day ?></th>
			<th class="select">
				<select onchange="window.location='?m=<?php echo $month;?>&y='+this.value;">
					<?php
						for ( $i = ($year-20); $i <= ($year+20); $i++) {
							if($year==$i){$selected = 'selected';}else{$selected = '';}
							echo "<option value='{$i}' {$selected}>{$i}</option>";
						}
					?>
				</select>
			</th>
			<th class="select">
				<select onchange="window.location='?y=<?php echo $year;?>&m='+this.value;">
					<?php
						for ($i=1; $i <= 12; $i++) {
							if($month==$i){$selected = 'selected';}else{$selected = '';}
							echo "<option value='{$i}' {$selected}>{$i}</option>";
						}
					?>
				</select>
			</th>
			<th><a href="?<?php echo "y={$after_m_y}&m={$after_m}";?>">下个月>></a></th>
			<th><a href="?<?php echo "y={$after_y}&m={$month}";?>">下一年>></a></th>
		</tr>
		<tr>
			<th>星期日</th>
			<th>星期一</th>
			<th>星期二</th>
			<th>星期三</th>
			<th>星期四</th>
			<th>星期五</th>
			<th>星期六</th>
		</tr>
		<tr>
			<?php
				//补齐1号之前的td占位格
				for ($i=0; $i < $week; $i++) {
					echo "<td></td>";
				}
				//循环当前月份的天数
				for ($i=1; $i <= $days; $i++) {
					//周一换行
					if($i > 1 && ($i+$week)%7==1 ){
						echo "</tr><tr>";
					}
					echo "<td class='ymd{$year}{$month}{$i}' onmouseover=\"this.style.backgroundColor='#ffff66';\" onmouseout=\"this.style.backgroundColor='#d4e3e5';\">{$i}</td>";
				}
				//补齐月底之后的td占位格
				$week_ys = ($days+$week)%7;
				if( $week_ys > 0 ){
					for ($i=0; $i < (7-$week_ys); $i++) {
						echo '<td></td>';
					}
				}
			?>
		</tr>
	</table>
</body>
</html>

就这样,一个好看的PHP日历就完成了。

白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论