PHP 简单日历功能的实现

PHP piniu 1449浏览 0评论

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

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

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

具体的代码实现如下:

<?php
header("Content-Type: text/html;charset=utf-8");

date_default_timezone_set("PRC");

/*
 * 日历函数
 */
 
 /**
  * 输出当前年、月的日历
  * 2015年6月13日
  * @author gaoqing
  * @param  int $year 年
  * @param  int $month 月
  * @param  int $day 当前日期
  * @return void 空
  */
 function calendar($year, $month, $day){
     /*
      * 1、判断当前年、月 有多少天
      * 2、输出基本的日历的框架
      * 3、判断当前月的第一天,是周几
      * 4、循环所有的天数,填满日历
      */
     
     //1、判断当前年、月 有多少天
     $unix_time = mktime(0, 0, 0, $month, 1, $year);
     //$mont_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);
     $mont_day = intval(date('t', $unix_time));
     
     //2、输出基本的日历的框架
     echo "<table border = '0' style = 'text-align:center; width: 800px;' >";
     
     echo "<tr>";
         echo "<th>星期日</th>";
         echo "<th>星期一</th>";
         echo "<th>星期二</th>";
         echo "<th>星期三</th>";
         echo "<th>星期四</th>";
         echo "<th>星期五</th>";
         echo "<th>星期六</th>";
     echo "</tr>";
     
     //3、判断当前月的第一天,是周几
     $first_day_week = intval(date('w', $unix_time));
     
     /*
      * 4、循环所有的天数,填满日历
      *     4.1、首先填充第一行,根据第一天的星期数,填充空白
      *     4.2、依次的循环日期数,当 $i % 7 时,说明是下一个星期,需要换行
      *     4.3、所有日期都循环后,判断是否到了表格末尾,如果没到,用空格填充
      */
     echo "<tr>";
     //4.1、首先填充第一行,根据第一天的星期数,填充空白
     for ($i = 0; $i < $first_day_week; $i++){
         echo "<td> </td>";
     }
     
     //4.2、依次的循环日期数,当 $i % 7 时,说明是下一个星期,需要换行
     for ($j = 1; $j <= $mont_day; $j++){
         if ($j == $day) {
             echo "<td style = 'background: red;' >{$j}</td>";
         }else {
             echo "<td>{$j}</td>";
         }
         $i++;
         
         if($i % 7 == 0){
             echo "</tr><tr>";
         }
     }
     
     //4.3、所有日期都循环后,判断是否到了表格末尾,如果没到,用空格填充
     while ($i % 7 != 0) {
         $i++;
         echo "<td> </td>";
     }
     
     echo "</tr>";
     
     echo "</table>";
 }
 
 calendar(2015, 6, 13);
?>

简易的页面显示为:


发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: