首先,给大家展示一下效果图。
编辑
功能包括:年份和月份查询,上一年、下一年、上一月、下一月和回到今天这几个功能。
项目文件
编辑
项目代码
1.php
<?php echo "<pre>"; //设置时区 //date_default_timezone_set('America/New_York'); //1.获取时间戳 var_dump(time()); //2.格式化时间戳 var_dump(date('Y-m-d H:i:s',time())); //3.将一个指定的日期时间转换为时间戳 //var_dump(mktime('时','分','秒','月','日','年')); var_dump(mktime('10','30','59','12','30','2001')); //4.将一个字符串格式的日期,转换为时间戳 var_dump(date('Y-m-d H:i:s',strtotime("+1day"))); //明天的现在这个时候 var_dump(date('Y-m-d H:i:s',strtotime("-1day"))); //昨天的现在这个时候 var_dump(date('Y-m-d H:i:s',strtotime("-1week"))); //上周的现在这个时候 var_dump(date('Y-m-d H:i:s',strtotime("-1month"))); //上个月的现在这个时候 var_dump(date('Y-m-d H:i:s',strtotime("-1year"))); //上个月的现在这个时候 var_dump(date('Y-m-d H:i:s',strtotime("-1year +1month +2week +2day"))); //上个月的现在这个时候 ?>
calendar_new.php
<!DOCTYPE html> <html> <head> <title>万年历</title> <meta charset="utf-8"/> </head> <body> <?php //获取用户查询的年份和月份 $year = isset($_GET['year'])==true ? $_GET['year'] : date('Y'); $month = isset($_GET['month'])==true ? $_GET['month'] : date('m'); //只对$_GET有效 // $year = $_GET['year'] ?? date('Y'); // $month = $_GET['month'] ?? date('m'); $new_year = date('Y',time()); // echo $new_year; $new_month = date('m',time()); // echo $new_month; $new_days = date('d',time()); //获取当前月第一天的时间戳 $time = mktime(0,0,0,$month,1,$year); //1.首先,获取万年历前方的空格 $first = date('N',$time)-1; //0 //2.然后,获得当前月的天数 $days = date('t',$time); //30 //3.最后,求得万年历后方的空格 $last = 42-$first-$days //12 ?> <center> <h2>万年历</h2> <h3><?= $year ?> 年 <?= $month ?> 月</h3> <form action="./calendar_new.php" method="get"> 年份:<select name='year'> <?php for($y=1970; $y<=2100; $y++){ if($y==$year){ echo "<option selected value='{$y}'>{$y} 年</option>"; }else{ echo "<option value='{$y}'>{$y} 年</option>"; } } ?> </select> 月份:<select name='month'> <?php for($m=1; $m<=12; $m++){ if($m==$month){ ?> <option selected value="<?= $m ?>"><?= $m ?> 月</option> <?php }else{ ?> <option value="<?= $m ?>"><?= $m ?> 月</option> <?php } } ?> </select> <input type="submit" value="查询"/> </form> <br/> <table border='1' width='800' cellspacing='0' cellpadding='5'> <tr> <th>一</th> <th>二</th> <th>三</th> <th>四</th> <th>五</th> <th>六</th> <th>日</th> </tr> <tr align='center'> <?php //定义一个统计单元格个数的空变量 $num = 0; $new_days = date('d',time()); //1.循环表格中前方的空格 for($i=1; $i<=$first; $i++){ echo "<td> </td>"; ++$num; //判断单元格是否到达7的倍数 if($num%7==0){ echo "</tr><tr align='center'>"; } } //2.循环表格中中间的日期 for($j=1; $j<=$days; $j++){ // echo $year; // echo $month; if(($j==$new_days) && ($year==$new_year) && ($month==$new_month) ){ echo "<td><font color=red>{$j}</font></td>"; ++$num; }else{ echo "<td>{$j}</td>"; ++$num; } //判断单元格是否到达7的倍数 if($num%7==0){ echo "</tr><tr align='center'>"; } } //3.循环表格最后的空格 for($k=1; $k<=$last; $k++){ echo "<td> </td>"; ++$num; //判断单元格是否到达7的倍数 if($num%7==0){ echo "</tr><tr align='center'>"; } } ?> </tr> </table> <br/> <a href="./calendar_new.php?year=<?= $year-1 ?>&month=<?= $month ?>">上一年</a> <a href="./calendar_new.php?year=<?= $prevy ?>&month=<?= $prevm ?>">上一月</a> <a href="./calendar_new.php">回到今天</a> <a href="./calendar_new.php?year=<?= $nexty ?>&month=<?= $nextm ?>">下一月</a> <a href="./calendar_new.php?year=<?= $year+1 ?>&month=<?= $month ?>">下一年</a> </center> </body> </html>
大家可以直接复制代码,放到对应的文件名里就可以运行。适合初学php的人学习使用。





