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 相关文章推荐
输出控制类
Oct 09 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
深入PHP magic quotes的详解
Jun 17 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
Jan 14 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
PHP单态模式简单用法示例
Nov 16 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 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 和 MySQL 基础教程(三)
2006/10/09 PHP
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python 中的int()函数怎么用
2017/10/17 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
pytorch 共享参数的示例
2019/08/17 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
学生就业推荐信
2013/11/13 职场文书
自主招生自荐信指南
2014/02/04 职场文书
文化活动实施方案
2014/03/28 职场文书
大学生新学期计划书
2014/04/28 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
python glom模块的使用简介
2021/04/13 Python
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers
Python中的 No Module named ***问题及解决
2022/07/23 Python