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
轻松修复Discuz!数据库
May 03 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
WordPress中is_singular()函数简介
Feb 05 PHP
PHP积分兑换接口实例
Feb 09 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
twig里使用js变量的方法
Feb 05 PHP
php事件驱动化设计详解
Nov 10 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
PHP实现统计代码行数小工具
Sep 19 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中Session的概念
2006/10/09 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
四个PHP非常实用的功能
2015/09/29 PHP
怎么判断js脚本加载完成
2014/02/28 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python 利用zmail库发送邮件
2020/09/11 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Linux的主要特性
2016/09/03 面试题
秋季运动会广播稿大全
2014/02/17 职场文书
干部下基层实施方案
2014/03/14 职场文书
寄语是什么意思
2014/04/10 职场文书
老公给老婆的保证书
2014/04/28 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
委托书的样本
2015/01/28 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
公司会议开幕词
2016/03/03 职场文书
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA