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类中Static方法效率测试代码
Oct 17 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
php使用curl存储cookie的示例
Mar 31 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php生成动态验证码gif图片
Oct 19 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
Aug 03 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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
用Flash图形化数据(二)
2006/10/09 PHP
php自动跳转中英文页面
2008/07/29 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
web前端开发也需要日志
2010/12/09 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
java判断三位数的实例讲解
2019/06/10 Python
python selenium循环登陆网站的实现
2019/11/04 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
医药个人求职信范文
2014/01/29 职场文书
捐款活动总结
2014/08/27 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL