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 分页原理详解
Aug 21 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
php实现快速排序法函数代码
Aug 27 PHP
php数组的概述及分类与声明代码演示
Feb 26 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
php下载文件超时时间的设置方法
Oct 06 PHP
php数组指针操作详解
Feb 14 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
PHP7变量处理机制修改
Mar 09 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内容的函数
2008/08/27 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
JavaScript如何操作css
2020/10/24 Javascript
使用Python写CUDA程序的方法
2017/03/27 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python3常见函数range()用法详解
2019/12/30 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
成绩单家长评语大全
2014/04/16 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
2014年预算员工作总结
2014/12/05 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
道歉信范文
2015/05/12 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
python解析照片拍摄时间进行图片整理
2022/07/23 Python