PHP制作万年历


Posted in PHP onJanuary 07, 2015

使用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();

效果还不错吧,小伙伴们还可以自己美化下,这里就不多做说明了。

PHP 相关文章推荐
php的控制语句
Oct 09 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
PHP的PSR规范中文版
Sep 28 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
PHP中trait使用方法详细介绍
May 21 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 #PHP
CI框架中site_url()和base_url()的区别
Jan 07 #PHP
给ECShop添加最新评论
Jan 07 #PHP
php程序总是提示验证码输入有误解决方案
Jan 07 #PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 #PHP
php中的动态调用实例分析
Jan 07 #PHP
Zend Guard使用指南及问题处理
Jan 07 #PHP
You might like
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
js实现微信分享代码
2020/10/11 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
python学生信息管理系统(完整版)
2020/04/05 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
函授大专自我鉴定
2013/11/01 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
2015年司法局工作总结
2015/05/22 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
上班旷工检讨书
2015/08/15 职场文书
初中生物教学反思
2016/02/20 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
TensorFlow的自动求导原理分析
2021/05/26 Python