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 相关文章推荐
PHP开发入门教程之面向对象
Dec 05 PHP
php zend解密软件绿色版测试可用
Apr 14 PHP
php数据库密码的找回的步骤
Jan 12 PHP
php中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
PHP滚动日志的代码实现
Jun 10 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
实现PHP搜索加分页
Oct 12 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php面向对象重点知识分享
Sep 27 PHP
浅谈laravel aliases别名的原理
Oct 24 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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
phpwind中的数据库操作类
2007/01/02 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
如何在PHP中读写文件
2020/09/07 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python实现包含min函数的栈
2016/04/29 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
如何解决安装python3.6.1失败
2020/07/01 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
技术总监岗位职责
2013/12/05 职场文书
高三自我评价
2014/02/01 职场文书
《去年的树》教学反思
2014/04/11 职场文书
学术诚信承诺书
2014/05/26 职场文书
观看信仰心得体会
2014/09/04 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
DSP接收机前端设想
2022/04/05 无线电