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 print EOF实现方法
May 21 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
PHP模块memcached使用指南
Dec 08 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
php防止sql注入的方法详解
Feb 20 PHP
php接口实现拖拽排序功能
Apr 23 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 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实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
基于vue实现分页效果
2017/11/06 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python变量和数据类型详解
2017/02/15 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
python脚本第一行如何写
2020/08/30 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
python实现计算图形面积
2021/02/22 Python
中专毕业生求职简历的自我评价
2013/10/21 职场文书
配件采购员岗位职责
2013/12/03 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
国际贸易实训总结
2015/08/03 职场文书
python 如何用terminal输入参数
2021/05/25 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL