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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
PHP 中英文混合排版中处理字符串常用的函数
Apr 12 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php xml-rpc远程调用
Dec 19 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
Laravel相关的一些故障解决
Aug 19 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/06/08 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
详解vuex的简单使用
2018/03/12 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python安装selenium包详细过程
2019/07/23 Python
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
编程输出如下图形
2013/11/24 面试题
大学毕业通用个人的求职信
2013/12/08 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
工作失误检讨书范文
2015/01/26 职场文书
会计简历自我评价
2015/03/10 职场文书
少先队工作总结2015
2015/05/13 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL