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发送邮件类代码附详细说明
Jul 10 PHP
php中对2个数组相加的函数
Jun 24 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP制作用户注册系统
Oct 23 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
php7下的filesize函数
Sep 30 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
php图片缩放实现方法
2014/02/20 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php常见的魔术方法详解
2014/12/25 PHP
JS 进度条效果实现代码整理
2011/05/21 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
微信小程序实现圆形进度条动画
2020/11/18 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
python字典键值对的添加和遍历方法
2016/09/11 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
Python进行特征提取的示例代码
2020/10/15 Python
Python识别处理照片中的条形码
2020/11/16 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
教师师德教育的自我评价
2013/10/31 职场文书
小学教师事迹材料
2014/01/13 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
创先争优一句话承诺
2014/05/29 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
武当山导游词
2015/02/03 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
新学期主题班会
2015/08/17 职场文书