PHP 简单日历功能的实现

  1、这是一个简单的 php 例子

  2、这个例子的功能是,实现一个简单的日历显示功能。

  3、该函数的作用是:输入指定的 年、月、日时,输出当前月的日历,并在输入的指定 日期 中,突出显示。

  具体的代码实现如下:

  

 1 <?php
 2 header("Content-Type: text/html;charset=utf-8");
 3 
 4 date_default_timezone_set("PRC");
 5 
 6 /*
 7  * 日历函数
 8  */
 9  
10  /**
11   * 输出当前年、月的日历
12   * 2015年6月13日
13   * @author gaoqing
14   * @param  int $year 年
15   * @param  int $month 月
16   * @param  int $day 当前日期
17   * @return void 空
18   */
19  function calendar($year, $month, $day){
20      /*
21       * 1、判断当前年、月 有多少天
22       * 2、输出基本的日历的框架
23       * 3、判断当前月的第一天,是周几
24       * 4、循环所有的天数,填满日历
25       */
26      
27      //1、判断当前年、月 有多少天
28      $unix_time = mktime(0, 0, 0, $month, 1, $year);
29      //$mont_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);
30      $mont_day = intval(date('t', $unix_time));
31      
32      //2、输出基本的日历的框架
33      echo "<table border = '0' style = 'text-align:center; width: 800px;' >";
34      
35      echo "<tr>";
36          echo "<th>星期日</th>";
37          echo "<th>星期一</th>";
38          echo "<th>星期二</th>";
39          echo "<th>星期三</th>";
40          echo "<th>星期四</th>";
41          echo "<th>星期五</th>";
42          echo "<th>星期六</th>";
43      echo "</tr>";
44      
45      //3、判断当前月的第一天,是周几
46      $first_day_week = intval(date('w', $unix_time));
47      
48      /*
49       * 4、循环所有的天数,填满日历
50       *     4.1、首先填充第一行,根据第一天的星期数,填充空白
51       *     4.2、依次的循环日期数,当 $i % 7 时,说明是下一个星期,需要换行
52       *     4.3、所有日期都循环后,判断是否到了表格末尾,如果没到,用空格填充
53       */
54      echo "<tr>";
55      //4.1、首先填充第一行,根据第一天的星期数,填充空白
56      for ($i = 0; $i < $first_day_week; $i++){
57          echo "<td>&nbsp;</td>";
58      }
59      
60      //4.2、依次的循环日期数,当 $i % 7 时,说明是下一个星期,需要换行
61      for ($j = 1; $j <= $mont_day; $j++){
62          if ($j == $day) {
63              echo "<td style = 'background: red;' >{$j}</td>";
64          }else {
65              echo "<td>{$j}</td>";
66          }
67          $i++;
68          
69          if($i % 7 == 0){
70              echo "</tr><tr>";
71          }
72      }
73      
74      //4.3、所有日期都循环后,判断是否到了表格末尾,如果没到,用空格填充
75      while ($i % 7 != 0) {
76          $i++;
77          echo "<td>&nbsp;</td>";
78      }
79      
80      echo "</tr>";
81      
82      echo "</table>";
83  }
84  
85  calendar(2015, 6, 13);
86 ?>

  简易的页面显示为:

  

posted @ 2015-06-13 12:00  绿 叶  阅读(1554)  评论(0编辑  收藏  举报