当前位置:首页 > PHP教程 > php类库 > 列表

PHP实现简单日历类编写

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-24 11:37:57 浏览: 评论:0 

这篇文章主要为大家详细介绍了PHP实现简单日历类编写,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

用PHP实现日历类的编写,供大家参考,具体内容如下

calendar.class.php

  1. <?php 
  2. /* 
  3. * 创建一个日历类 
  4. * 
  5. * 
  6. */ 
  7.  //修改默认时区 
  8.  date_default_timezone_set("PRC"); 
  9.    
  10.  class Calendar { 
  11.   private $year
  12.  private $month
  13.  private $day//当月总天数 
  14.  private $first_week//每月的第一天是星期几 
  15.    
  16.  //构造函数 
  17.  function __construct() { 
  18.   $this->year = isset($_GET['year'])?$_GET['year']:date("Y"); 
  19.   $this->month = isset($_GET["month"])?$_GET["month"]:date("m"); 
  20.   $this->first_week = date("w"mktime(0, 0 ,0, $this->month, 1, $this->year)); 
  21.   $this->day = date("t"mktime(0, 0 ,0, $this->month, 1, $this->year)); 
  22.  } 
  23.  function showCalendar() { 
  24.  //  echo $this->year."年".$this->month."月".$this->first_week."天".$this->day; 
  25.    echo "<table align='center'>"//用表格输出 
  26.    $this->chageDate("index.php"); //用于用户调整年月份 
  27.   $this->weekList();//显示星期 
  28.   $this->dayList(); //显示天数 
  29.     
  30.   echo "</table>"
  31.  } 
  32.  //1、显示星期 
  33.  private function weekList() { 
  34.   $week = array("日","一","二","三","四","五","六"); 
  35.   echo "<tr>"
  36.    for ($i = 0; $i < count($week); $i++) { 
  37.    echo "<th>".$week[$i]."</th>"
  38.   } 
  39.   echo "</tr>"
  40.  } 
  41.  //2.显示天数 
  42.  private function dayList() { 
  43.   $color = "#2ca50c"
  44.   echo "<tr>"
  45.   for ($i = 0; $i < $this->first_week; $i++) { //输出空格,弥补当前月空缺部分 
  46.    echo "<td bgcolor='#2ca50c'> </td>"
  47.   } 
  48.   for ($k = 1; $i <= $this->day; $k++) { 
  49.    $i++; 
  50.    if ($k == date("d")) echo "<td id='nowd'>".$k."</td>"//是今天,加效果 
  51.    else echo "<td bgcolor=$color>".$k."</td>"
  52.    if ($i % 7 == 0) { 
  53.    echo "</tr><tr>"//每7天一次换行 
  54.    if ($i % 2 == 0) $color = "#2ca50c"
  55.    else $color = "#9ddb27"//实现各行换色的效果 
  56.    } 
  57.   } 
  58.   while ($i % 7 != 0) { //将剩余的空格补完 
  59.    echo "<td bgcolor='#2ca50c'> </td>"
  60.   $i++;  
  61.   } 
  62.   echo "</tr>"
  63.  } 
  64.     
  65.  //3、用于用户调整天数 
  66.  private function chageDate($url="index.php") { 
  67.   echo "<tr>"
  68.    echo "<caption><h1>".$this->year."年".$this->month."月</h1></caption>";  
  69.   echo "</tr>"
  70.   echo "<tr>"
  71.   echo "<td>"."<a href='?".$this->prevYear($this->year,$this->month)."'>"."<"."</a>"
  72.   echo "<td>"."<a href='?".$this->prevMonth($this->year,$this->month)."'>"."<<"."</a>"
  73.     
  74.   echo "<td colspan='3'>"
  75.    echo '<select οnchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">'
  76.     for ($year = 2038; $year >= 1970; $year--) { 
  77.     $selected = ($year == $this->year)?"selected":""
  78.     echo '<option '.$selected' value="'.$year.'">'.$year.'</option>'
  79.     //echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>'; 
  80.    } 
  81.    echo "</select>"
  82.      
  83.   echo '<select name="month" οnchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">'
  84.   for($month=1;$month <= 12;$month++){ 
  85.    $selected1 = ($month == $this->month) ? "selected" : ""
  86.    echo '<option '.$selected1.' value="'.$month.'">'.$month.'</option>'
  87.   } 
  88.   echo '</select>'
  89.   echo "</td>"
  90.     
  91.     
  92.   echo "<td>"."<a href='?".$this->nextMonth($this->year,$this->month)."'>".">>"."</a>"
  93.   echo "<td>"."<a href='?".$this->nextYear($this->year,$this->month)."'>".">"."</a>"
  94.   echo "</tr>"
  95.  } 
  96.    
  97.  private function prevYear($year$month) { //获取上一年的数据 
  98.   $year--; 
  99.   if ($year < 1970) $year = 1970; 
  100.   return "year={$year}&month={$month}"
  101.  } 
  102.  private function prevMonth($year$month) { 
  103.   if ($month == 1) { 
  104.    $year--; 
  105.   if ($year < 1970) $year = 1970; 
  106.   $month = 12; 
  107.   }else $month--;  
  108.   return "year={$year}&month={$month}"
  109.  } 
  110.  private function nextYear($year$month) { //获取上一年的数据 
  111.   $year++; 
  112.   if ($year > 2038) $year = 2038; 
  113.   return "year={$year}&month={$month}"
  114.  } 
  115.  private function nextMonth($year$month) { 
  116.   if ($month == 12) { 
  117.    $year++; 
  118.   if ($year > 2038) $year = 2038; 
  119.   $month = 1; 
  120.   }else $month++;  
  121.   return "year={$year}&month={$month}"
  122.  } 
  123.  } 

主页 index.php

  1. <!doctype html> 
  2. <html> 
  3. <head> 
  4. <meta charset="utf-8"
  5. <title>日历显示</title> 
  6. <style> 
  7.  table { 
  8.  border:1px solid #050; 
  9.  margin: 100px auto; 
  10.  } 
  11.  th { 
  12.   width: 30px; 
  13.  background-color: #0CC; 
  14.  color: #fff; 
  15.  height: 30px; 
  16.  font-size: 20px; 
  17.  } 
  18.  #nowd { 
  19.   color: yellow; 
  20.  background: #F00; 
  21.  } 
  22.  td { 
  23.   width: 30px; 
  24.  text-align: center; 
  25.    
  26.  height: 25px; 
  27.  color: #fff; 
  28.  } 
  29.  a { 
  30.  display: block; 
  31.  width: 35px; 
  32.  height: 35px; 
  33.  background: #0F9; 
  34.   text-decoration: none; 
  35.  text-align: center; 
  36.  line-height: 35px; 
  37.  } 
  38.  a:hover { 
  39.   background: #CF0; 
  40.  color: #fff; 
  41.  font-size: 20px; 
  42.  } 
  43. </style> 
  44. </head> 
  45.    
  46. <body> 
  47.  <?php 
  48.  include "calendar.class.php"
  49.  $ca = new Calendar(); 
  50.  $ca->showCalendar(); 
  51.  ?> 
  52. </body> 
  53. </html> 

PHP实现简单日历类编写

Tags: PHP日历类

分享到:

相关文章