php日历制作代码分享


Posted in PHP onJanuary 20, 2014

 
php日历制作代码分享

calendar.class.php

 

 <?php
class Calendar {
  private $year; //当前的年
  private $month; //当前的月
  private $start_weekday; //当月的第一天对应的是周几
  private $days; //当前月一共多少天
  function __construct(){
   $this->year=isset($_GET["year"]) ? $_GET["year"] : date("Y");
   $this->month=isset($_GET["month"]) ? $_GET["month"] : date("m");
   $this->start_weekday=date("w", mktime(0, 0, 0, $this->month, 1, $this->year));
   $this->days=date("t", mktime(0, 0, 0, $this->month, 1, $this->year));
  }
  function out(){
   echo '<table align="center">';
   $this->chageDate("test.php");
   $this->weeksList();
   $this->daysList();
   echo '</table>';
  }
  private function weeksList(){
   $week=array('日','一','二','三','四','五','六');
   echo '<tr>';
   for($i=0; $i<count($week); $i++)
    echo '<th class="fontb">'.$week[$i].'</th>';
   echo '</tr>';
  }
  private function daysList(){
   echo '<tr>';
   //输出空格(当前一月第一天前面要空出来)
   for($j=0; $j<$this->start_weekday; $j++)
    echo '<td> </td>';

   for($k=1; $k<=$this->days; $k++){
    $j++;
    if($k==date('d'))
     echo '<td class="fontb">'.$k.'</td>';
    else
     echo '<td>'.$k.'</td>';
    if($j%7==0)
     echo '</tr><tr>';
   }
   //后面几个空格
   while($j%7!==0){
    echo '<td> </td>';
    $j++;
   }
   echo '</tr>';
  }
  private function prevYear($year, $month){
   $year=$year-1;
   if($year < 1970)
    $year = 1970;
   return "year={$year}&month={$month}"; 
  }

  private function prevMonth($year, $month){
   if($month == 1) {
    $year = $year -1;
    if($year < 1970)
     $year = 1970;
    $month=12;
   }else{
    $month--;
   }
   return "year={$year}&month={$month}"; 
  }

  private function nextYear($year, $month){
   $year = $year + 1;
   if($year > 2038)
    $year = 2038;
   return "year={$year}&month={$month}"; 
  }

  private function nextMonth($year, $month){
   if($month==12){
    $year++;
    if($year > 2100)
     $year=2100;
    $month=1;
   }else{
    $month++;
   }
   
   return "year={$year}&month={$month}"; 
  }
  private function chageDate($url=""){
   echo '<tr>';
   echo '<td><a href="?'.$this->prevYear($this->year, $this->month).'">'.'<<'.'</a></td>';
   echo '<td><a href="?'.$this->prevMonth($this->year, $this->month).'">'.'<'.'</a></td>';
   echo '<td colspan="3">';
   echo '<form>';
   echo '<select name="year" onchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">';
   for($sy=1970; $sy <= 2100; $sy++){
    $selected = ($sy==$this->year) ? "selected" : "";
    echo '<option '.$selected.' value="'.$sy.'">'.$sy.'</option>';
   }
   echo '</select>';
   echo '<select name="month"  onchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">';
   for($sm=1; $sm<=12; $sm++){
    $selected1 = ($sm==$this->month) ? "selected" : "";
    echo '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>';
   }
   echo '</select>';
   echo '</form>'; 
   echo '</td>';

   echo '<td><a href="?'.$this->nextYear($this->year, $this->month).'">'.'>>'.'</a></td>';
   echo '<td><a href="?'.$this->nextMonth($this->year, $this->month).'">'.'>'.'</a></td>';
   echo '</tr>';
  }
 }
?>
 

 test.php

 

 <style>
 table {
  border:1px solid #050;
 }
 .fontb {
  color:white;
  background:blue;
 }
 
 th {
  width:30px;
 }
 td,th {
  height:30px;
  text-align:center;
 }
 form {
  margin:0px;
  padding:0px;
 }
</style>
<?php
 include "calendar.class.php";
 $calendar=new Calendar;
 $calendar->out();
?>
 
PHP 相关文章推荐
使用sockets:从新闻组中获取文章(二)
Oct 09 PHP
Zend Guard一些常见问题解答
Sep 11 PHP
php 数组的一个悲剧?
May 11 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
php源码的使用方法讲解
Sep 26 PHP
PHP常用函数之格式化时间操作示例
Oct 21 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 PHP
php使用qr生成二维码的示例分享
Jan 20 #PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 #PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 #PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 #PHP
php解析url的三个示例
Jan 20 #PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 #PHP
php fsockopen解决办法 php实现多线程
Jan 20 #PHP
You might like
世界上第一台立体声收音机
2021/03/01 无线电
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python 自动补全(vim)
2014/11/30 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
浙江文明网签名寄语
2014/01/18 职场文书
公司承诺书格式
2014/05/21 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
Python中的 No Module named ***问题及解决
2022/07/23 Python