PHP 万年历实现代码


Posted in PHP onOctober 18, 2012

使用PHP实现万年历功能的要点:

•得到当前要处理的月份总共有多少天$days
•得到当前要处理的月份的一号是星期几$dayofweek
$days的作用:知道要处理的月份共有多少天,就可以通过循环输出天数了

$dayofweek的作用:只有知道每个月的1号是星期几,才能知道在输出天数之前需要输出多少空格(空白)

最终效果图如下:

PHP 万年历实现代码

“万年历类”的代码如下:

<?php 
/** 
* PHP万年历 
* @author Fly 2012/10/16 
*/ 
class Calendar{ 
protected $_table;//table表格 
protected $_currentDate;//当前日期 
protected $_year; //年 
protected $_month; //月 
protected $_days; //给定的月份应有的天数 
protected $_dayofweek;//给定月份的 1号 是星期几 
/** 
* 构造函数 
*/ 
public function __construct() 
{ 
$this->_table=""; 
$this->_year = isset($_GET["y"])?$_GET["y"]:date("Y"); 
$this->_month = isset($_GET["m"])?$_GET["m"]:date("m"); 
if ($this->_month>12){//处理出现月份大于12的情况 
$this->_month=1; 
$this->_year++; 
} 
if ($this->_month<1){//处理出现月份小于1的情况 
$this->_month=12; 
$this->_year--; 
} 
$this->_currentDate = $this->_year.'年'.$this->_month.'月份';//当前得到的日期信息 
$this->_days = date("t",mktime(0,0,0,$this->_month,1,$this->_year));//得到给定的月份应有的天数 
$this->_dayofweek = date("w",mktime(0,0,0,$this->_month,1,$this->_year));//得到给定的月份的 1号 是星期几 
} 
/** 
* 输出标题和表头信息 
*/ 
protected function _showTitle() 
{ 
$this->_table="<table><thead><tr align='center'><th colspan='7'>".$this->_currentDate."</th></tr></thead>"; 
$this->_table.="<tbody><tr>"; 
$this->_table .="<td style='color:red'>星期日</td>"; 
$this->_table .="<td>星期一</td>"; 
$this->_table .="<td>星期二</td>"; 
$this->_table .="<td>星期三</td>"; 
$this->_table .="<td>星期四</td>"; 
$this->_table .="<td>星期五</td>"; 
$this->_table .="<td style='color:red'>星期六</td>"; 
$this->_table.="</tr>"; 
} 
/** 
* 输出日期信息 
* 根据当前日期输出日期信息 
*/ 
protected function _showDate() 
{ 
$nums=$this->_dayofweek+1; 
for ($i=1;$i<=$this->_dayofweek;$i++){//输出1号之前的空白日期 
$this->_table.="<td> </td>"; 
} 
for ($i=1;$i<=$this->_days;$i++){//输出天数信息 
if ($nums%7==0){//换行处理:7个一行 
$this->_table.="<td>$i</td></tr><tr>"; 
}else{ 
$this->_table.="<td>$i</td>"; 
} 
$nums++; 
} 
$this->_table.="</tbody></table>"; 
$this->_table.="<h3><a href='?y=".($this->_year)."&m=".($this->_month-1)."'>上一月</a>   "; 
$this->_table.="<a href='?y=".($this->_year)."&m=".($this->_month+1)."'>下一月</a></h3>"; 
} 
/** 
* 输出日历 
*/ 
public function showCalendar() 
{ 
$this->_showTitle(); 
$this->_showDate(); 
echo $this->_table; 
} 
} 
$calc=new Calendar(); 
$calc->showCalendar();

出处:http://www.cnblogs.com/hongfei
PHP 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
php中常用的预定义变量小结
May 09 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
php截取字符串函数分享
Feb 02 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
smarty模板数学运算示例
Dec 11 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
php strftime函数的详细用法
Jun 21 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 PHP
laravel异步监控定时调度器实例详解
Jun 21 PHP
php页面缓存ob系列函数介绍
Oct 18 #PHP
php cc攻击代码与防范方法
Oct 18 #PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 #PHP
PHP中替换换行符的几种方法小结
Oct 15 #PHP
php变量范围介绍
Oct 15 #PHP
php模板函数 正则实现代码
Oct 15 #PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 #PHP
You might like
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
Python统计单词出现的次数
2018/04/04 Python
pandas实现选取特定索引的行
2018/04/20 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Django中提示消息messages的设置方式
2019/11/15 Python
Python dict的常用方法示例代码
2020/06/23 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
优秀的计算机专业求职信范文
2013/12/27 职场文书
交通安全责任书范本
2014/07/24 职场文书
干部个人考察材料
2014/12/24 职场文书
实习计划书范文
2015/01/16 职场文书
给客户的感谢信
2015/01/21 职场文书
高中教师个人工作总结
2015/02/10 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis