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&amp;java(一)
Oct 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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读取IMAP邮件
2006/10/09 PHP
set_include_path在win和linux下的区别
2008/01/10 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
js实现车辆管理系统
2020/08/26 Javascript
Python模拟用户登录验证
2017/09/11 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
高中的自我鉴定
2013/12/16 职场文书
房地产财务管理制度
2014/02/02 职场文书
测试工程师职业规划书
2014/02/06 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
python中对列表的删除和添加方法详解
2022/02/24 Python