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

基本要求:

1.获取日期

2.获取给定日期是几号

3.获取给定日期是周几

4.获取月份天数

5.获取上一月和下一月

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


php代码:

<?php

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

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

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

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

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

	//当前是周几
	$week=date('w',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></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><a href='indextest.php?Y={$prevyear}&m={$prevmonth}'>上一月</a>&<a href='indextest.php?Y={$nextyear}&m={$nextmonth}'>下一月</a></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:'宋体';
}
h2 a{
	font-style:normal;
	font-size:40px;
	font-family:'黑体';
	color:purple;
}
/*组合选择器*/
tr,td,th{
	font-size:20px;
	background:gray;
}

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

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

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

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

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


更多相关文章

  1. 在PHP中如何取得两个日期时间相减的结果,得出大于一天,大于二天,大
  2. 当excel表格单元格的格式是日期格式非文本格式的时候,phpexcel 应
  3. PHP格式化日期,显示“刚刚,几分钟前,几小时前,几天前,几个月前”
  4. php mail函数一段好的代码
  5. 用于上传多个文件的PHP代码
  6. (phpQuery)对网站产品信息采集代码的优化
  7. 韩顺平_php从入门到精通_视频教程_学习笔记_源代码图解_PPT文档
  8. 不正确的日期时间值:“item.purchase date”
  9. 【MySQL 技巧分享】 mysql -e 加 v 简化代码

随机推荐

  1. Android触控
  2. Android 发送短信 源代码
  3. android input 事件传递主要流程
  4. android点滴4
  5. Android studio 中调用ndk-build 进行编
  6. android用ViewPager实现欢迎界面
  7. Android通知栏消息(基本文字通知)
  8. Android中获取屏幕的宽和高
  9. MTK Android Driver :camera
  10. Windows下Android开发环境配置的一种方法