PHP制作万年历

预览图(当前时间为2018年9月13日)

首先要了解php对日期时间的处理
1.主要的三个函数

  • echo date('Y-m-d');   //输入年月天,在这里需要注意Y必须要大写,m和d小写
  • mktime();  //取得请求时间段的时间戳 语法为 int mktime(int $hour,int $minute,int $second,int $month,int $day,int $year); 从右向左可以省略
  • checkdate(); //用于检查参数运算的年月日是否合法,在这里也要注意 Y 要大写

2.首先先写个html标签,再在body标签里面插入php代码

<?php
header("content-type:text/html;charset=utf-8");

//检测用户是否提交数据
if(isset($_POST["year"])){
	//使用用户提交的数据作为年数据
	$year = $_POST["year"];
}else{
	$year = date('Y');
}
if(isset($_POST["month"])){
	$month = $_POST["month"];
}else{
	$month = date('m');
}

//初始化月数据和日数据
$date=01;
$day=01;
$off=0;

//检测年数据是否正确
if($year<0 or $year>9999){
	//如果数据不正确,显示错误信息,就返回上一页
	echo "<script> alert('年份应该在1-99之间');history.go(-1);</script>";
	exit();
}
//检测月数据是否正确
if($month<1 or $month>12){
	echo "<script> alert('月份应该在1-12之间');history.go(-1);</script>";
	exit();
}
while(checkdate($month,$date,$year)){
	$date++;
}

?>

3.制作万年历的表头以及构建万年历的内容

<!--制作万年历表头-->
<form method="post" action="" name="calendar">
	<table width=100% border="1" cellpadding="2" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#EBEAEE" >    
		<tr align="center" valign="middle">
			<td colspan="7" bgcolor="gray">
				<input type="text" name="year" size="4" maxlength="4" value="<?=$year?>">
				<input type="text" name="month" size="2" maxlength="2" value="<?=$month?>">
				<input type="submit" name="submit" align=absmilddle border=0 value="跳转">
			</td>
		</tr>
		<tr align="center" valign="middle">
			<td bgcolor="pink">日</td>
			<td>一</td>
			<td>二</td>
			<td>三</td>
			<td>四</td>
			<td>五</td>
			<td bgcolor="pink">六</td>	
		</tr>
	<tr>
<!-- 构建万年历内容 -->
<?php
	while($day < $date){
	    if($day == date("d")&& $year == date("Y") && $month == date("m")){
		$day_color="red";
	}else{
		$day_color="black";
	}

	if($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Sunday'){
		echo "<td><font color=$day_color>$day</font></td>";
		$off='01';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Monday'){
		echo "<td>&nbsp</td>><td><font color=$day_color>$day</font></td>";
		$off='02';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Tuesday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='03';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Wednesday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='04';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Thursday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='05';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Friday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='06';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Saturday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='07';
	}else{
	
		echo "<td><font color=$day_color>$day</font></td> \n";
	}
	$day++;
        $off++;
	if($off>7){
		echo "<tr></tr>";
		$off=1;
	}else{
		echo "";
	}	
}

//计算剩下的数据,用空格补充
	for($i=$off;$i<=7;$i++){
		echo "<td>&nbsp</td>";
	}
?>

在调试的时候看的就比较清楚了

 

调试的时候一步一步的来能使人更加的了解程序的运行,也更容易找到错误,以后要多多调试。

最后放上全部代码:

<!DOCTYPE html>
<html>
<head>
	<title>万年历</title>
	<meta http-equiv="Content-Type" content="text/html" charset="gb_2312">
<!--style-->
	<style type="text/css">
		table{
			background-color: #b0c4de;
		}
		tr{
			background-color: white;
		}
		td{
			font-size: 20px;
			color: red;
			line-height: 140%;
		}
	</style>
<!--end-->
</head>
<body>

<?php
header("content-type:text/html;charset=utf-8");

//检测用户是否提交数据
if(isset($_POST["year"])){
	//使用用户提交的数据作为年数据
	$year = $_POST["year"];
}else{
	$year = date('Y');
}
if(isset($_POST["month"])){
	$month = $_POST["month"];
}else{
	$month = date('m');
}

//初始化月数据和日数据
$date=01;
$day=01;
$off=0;

//检测年数据是否正确
if($year<0 or $year>9999){
	//如果数据不正确,显示错误信息,就返回上一页
	echo "<script> alert('年份应该在1-99之间');history.go(-1);</script>";
	exit();
}
//检测月数据是否正确
if($month<1 or $month>12){
	echo "<script> alert('月份应该在1-12之间');history.go(-1);</script>";
	exit();
}
while(checkdate($month,$date,$year)){
	$date++;
}

?>

<!--制作万年历表头-->
<form method="post" action="" name="calendar">
	<table width=100% border="1" cellpadding="2" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#EBEAEE" >    
		<tr align="center" valign="middle">
			<td colspan="7" bgcolor="gray">
				<input type="text" name="year" size="4" maxlength="4" value="<?=$year?>">
				<input type="text" name="month" size="2" maxlength="2" value="<?=$month?>">
				<input type="submit" name="submit" align=absmilddle border=0 value="跳转">
			</td>
		</tr>
		<tr align="center" valign="middle">
			<td bgcolor="pink">日</td>
			<td>一</td>
			<td>二</td>
			<td>三</td>
			<td>四</td>
			<td>五</td>
			<td bgcolor="pink">六</td>	
		</tr>
	<tr>
<!-- 构建万年历内容 -->
<?php
	while($day < $date){
	    if($day == date("d")&& $year == date("Y") && $month == date("m")){
		$day_color="red";
	}else{
		$day_color="black";
	}

	if($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Sunday'){
		echo "<td><font color=$day_color>$day</font></td>";
		$off='01';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Monday'){
		echo "<td>&nbsp</td>><td><font color=$day_color>$day</font></td>";
		$off='02';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Tuesday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='03';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Wednesday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='04';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Thursday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='05';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Friday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='06';
	}elseif($day=='01' and date('l',mktime(0,0,0,$month,$day,$year))=='Saturday'){
		echo "<td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td>&nbsp</td><td><font color=$day_color>$day</font></td>";
		$off='07';
	}else{
	
		echo "<td><font color=$day_color>$day</font></td> \n";
	}
	$day++;
        $off++;
	if($off>7){
		echo "<tr></tr>";
		$off=1;
	}else{
		echo "";
	}	
}
	for($i=$off;$i<=7;$i++){
		echo "<td>&nbsp</td>";
	}
?>


</tr>
	</table>
</form>
</body>
</html>

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值