>백엔드 개발 >PHP 튜토리얼 >PHP实例————万年历_PHP教程

PHP实例————万年历_PHP教程

WBOY
WBOY원래의
2016-07-13 10:19:10889검색

PHP实例————万年历

和大家分享一个简易的万年历制作过程。

基本要求:

1.获取日期

2.获取给定日期是几号

3.获取给定日期是周几

4.获取月份天数

5.获取上一月和下一月

先贴一张效果图,样式做的比较丑,不喜勿喷。

\


php代码:

<?php

	//修改字符编码
	header("content-type:text/html;charset=utf-8");

	//外部样式链接
	echo "<link rel=&#39;stylesheet&#39; type=&#39;text/css&#39; href=&#39;calendar.css&#39;/>";

	//获取当前年
	$year=$_GET[&#39;Y&#39;]?$_GET[&#39;Y&#39;]:date(&#39;Y&#39;);

	//获取当前月
	$month=$_GET[&#39;m&#39;]?$_GET[&#39;m&#39;]:date(&#39;m&#39;);

	//获取当月有多少天
	$days=date(&#39;t&#39;,strtotime("{$year}-{$month}-1"));

	//当前是周几
	$week=date(&#39;w&#39;,strtotime("{$year}-{$month}-1"));

	//内容居中显示
	echo "<center>";

	//打印表头
	echo "<h1>{$year}年{$month}月</h1>";

	//打印日期表格
	echo "<table>";

	//打印星期
		echo "<tr>";
			echo "<th>周日</th>";
			echo "<th>周一</th>";
			echo "<th>周二</th>";
			echo "<th>周三</th>";
			echo "<th>周四</th>";
			echo "<th>周五</th>";
			echo "<th>周六</th>";
		echo "</tr>";

	//打印几号
	for($i=1-$week;$i<=$days;){
		echo "<tr>";
		for($j=0;$j<7;$j++){
			if($i>$days||$i<1){
				echo "<td>&#160;</td>";
			}else{
				echo "<td>$i</td>";
			}
			$i++;
		}
		echo "</tr>";
	}
	echo "</table>";

	//上一月和下一月算法
	if($month==1){
		$prevyear=$year-1;
		$prevmonth=12;
	}else{
		$prevyear=$year;
		$prevmonth=$month-1;
	}
	if($month==12){
		$nextyear=$year+1;
		$nextmonth=1;
	}else{
		$nextyear=$year;
		$nextmonth=$month+1;
	}

	//上一月和下一月的超链接
	echo "<h2>上一月&下一月</h2>";

	echo "</center>";
?>

CSS代码:

table{
	width:500px;
	height:300px;
	border:red dashed 1px;
	background:#ff00ff;
}
tr{
	text-align:center;
}
td{
	border:gray dotted 1px;
}
h1{
	font-style:italic;
	font-size:50px;
	font-family:&#39;宋体&#39;;
}
h2 a{
	font-style:normal;
	font-size:40px;
	font-family:&#39;黑体&#39;;
	color:purple;
}
/*组合选择器*/
tr,td,th{
	font-size:20px;
	background:gray;
}

说几点比较容易出错和用法巧妙的地方:

1.strtotime()中所计算的时间戳应该是完整的一个格式,把一个单独的年或月放进去是没有用的。

2.if语句中的条件里面,不是赋值,是等于!!!,要写 两个==。这地方太容易给忽略了。

3.原本打印的日期一直都是周日和一号对应。但是月份不同,这个日期和星期的对应关系也会有所改变,所以,在for循环中将$i-$week.就可以将当月的所有日期后退一定时间,达到日期与星期的完美对应。

4.在实现上一月和下一月的功能时,将几个变量作为参数带入,再配合一定的算法就能搞定了。具体的就看代码吧,文字也得再好也不如看两行代码效果好。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/876630.htmlTechArticlePHP实例————万年历 和大家分享一个简易的万年历制作过程。 基本要求: 1.获取日期 2.获取给定日期是几号 3.获取给定日期是周几 4.获...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.