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实现jQuery扩展函数
Oct 30 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
May 12 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
PDO::getAttribute讲解
Jan 28 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
PHP获取类私有属性的3种方法
Sep 10 PHP
详解Laravel制作API接口
May 31 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
JavaScript中的字符串操作详解
2013/11/12 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python实现配置文件备份的方法
2015/07/30 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python机器学习库xgboost的使用
2020/01/20 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
《雷雨》教学反思
2014/02/20 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
2014会计年终工作总结
2014/12/20 职场文书
环卫工作个人总结
2015/03/04 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
请客吃饭开场白
2015/06/01 职场文书
同学聚会祝酒词
2015/08/10 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js