PHP实例————万年历
2014-09-07 16:00
411 查看
和大家分享一个简易的万年历制作过程。
基本要求:
1.获取日期
2.获取给定日期是几号
3.获取给定日期是周几
4.获取月份天数
5.获取上一月和下一月
先贴一张效果图,样式做的比较丑,不喜勿喷。
![](https://img-blog.csdn.net/20140907154156843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3pxbmxz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
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.获取日期
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.在实现上一月和下一月的功能时,将几个变量作为参数带入,再配合一定的算法就能搞定了。具体的就看代码吧,文字也得再好也不如看两行代码效果好。
相关文章推荐
- PHP实现简单的万年历(实例)
- PHP经典实例教程(万年历)
- PHP实例二之简单的万年历
- php中看实例学正则表达式
- Php新手上路--3.从实例开始
- Smarty实例教程之三:----实例篇( 使用PHP内置MYSQL函数)
- 难得的PHP注入实例
- php注入实例
- PHP4.23在WindowsXP下的IIS和Apache2两种服务器上的安装实例
- WindowsServer2003 + IIS6.0 + ASP + NET + PHP + PERL + MSSQL + MYSQL 最新服务器安全设置技术实例
- PHP文件上传实例详解!!!
- ■ 实例学习 PHP 之表单处理篇
- FTP上传文件类实例(PHP)
- 实例学习PHP中的正则表达式
- PHP编程技巧:看实例学正则表达式
- [转帖]PHP世纪万年历
- 《PHP 经典实例》 PHP Developer's Cookbook
- 看实例学php正则表达式
- php中看实例学正则表达式
- php实例取得随机字符串