加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php 日历类 日历控件

发布时间:2020-05-25 06:47:04 所属栏目:PHP 来源:互联网
导读:php 日历类 日历控件

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

<?php
class CalendarForm {
 
  protected $year;
  protected $month;
  protected $day;
  protected $weekend;
  protected $currentdate;
  protected $dayofmonth;
  protected $day_count;
  protected $num;
  protected $week = array();
  protected $retunrhtml = "";
 
  function __construct($year,$month) {
    $this->makeWeeks($year,$month);
  }
 
  public function setYearMonth($year,$month) {
    $this->year = $year;
    $this->month = $month;
  }
 
  private function resetDayCount() {
    $this->day_count = 1;
  }
 
  private function setFirstWeek() {
    $this->num = 0;
  }
 
  public function getDayOfMonth($year,$month) {
    $this->resetDayCount();
    return date('t',mktime(0,$month,$this->day_count,$year));
  }
 
  private function setDayOfMonth($year,$month) {
    $this->dayofmonth = $this->getDayOfMonth($year,$month);
  }
 
  private function getDayOfWeek() {
    return date('w',$this->month,$this->year));
  }
 
  public function getNextMonth() {
    return date('m',28,$this->year) + 432000);
  }
 
  public function getNextYear() {
    return date('Y',$this->year) + 432000);
  }
 
  public function getPrevMonth() {
    return date('m',1,$this->year) - 432000);
  }
 
  public function getPrevYear() {
    return date('Y',$this->year) - 432000);
  }
 
  private function makeWeeks($year,$month) {
 
    $this->setYearMonth($year,$month);
    $this->setDayOfMonth($this->year,$this->month);
    $this->setFirstWeek();
 
    $this->num = 0;
    for ($i = 0; $i < 7; $i++) {
      $dayofweek = $this->getDayOfWeek();
      $dayofweek = $dayofweek - 1;
      if ($dayofweek == -1) {
        $dayofweek = 6;
      }
      if ($dayofweek == $i) {
        $this->week[$this->num][$i] = $this->day_count;
        $this->day_count++;
      }
      else {
        $this->week[$this->num][$i] = "";
      }
    }
    while (TRUE) {
      $this->num++;
      for ($i = 0; $i < 7; $i++) {
        $this->week[$this->num][$i] = $this->day_count;
        $this->day_count++;
        if ($this->day_count > $this->dayofmonth) {
          break;
        }
      }
      if ($this->day_count > $this->dayofmonth) {
        break;
      }
    }
 
  }
 
  public function getCalendarHeader() {
    $this->retunrhtml =
      "<table class="calendar-table">" .
      "<tbody>" .
      "<tr><th colspan="7">" . $this->month . "/" . $this->year . "</th></tr>" .
      "<tr>" .
      "<th style="text-align: center;">Monday</th>" .
      "<th style="text-align: center;">Tuesday</th>" .
      "<th style="text-align: center;">Wednesday</th>" .
      "<th style="text-align: center;">Thursday</th>" .
      "<th style="text-align: center;">Friday</th>" .
      "<th style="text-align: center;">Saturday</th>" .
      "<th style="text-align: center;">Sunday</th>" .
      "</tr>";
  }
 
  public function getCalendarFooter() {
    $this->retunrhtml .= "</tbody></table>";
  }
 
  public function getBeginTR() {
    $this->retunrhtml .= "<tr>";
  }
 
  public function getEndTR() {
    $this->retunrhtml .= "</tr>";
  }
 
  protected function getDay() {
    return $this->day;
  }
 
  protected function getMonth() {
    return $this->month;
  }
 
  protected function getYear() {
    return $this->year;
  }
 
  protected function isWeekend() {
    return $this->weekend;
  }
 
  protected function isCurrent() {
    return $this->currentdate;
  }
 
  public function getTDHref() {
    return $this->getDay();
  }
 
  public function getTD() {
    $class = '';
    $td = "td";
    if ($this->isCurrent()) {
      $class = 'today';
    }
    $this->retunrhtml .= "<$td class="$class">" . $this->getTDHref() . "</$td>";
  }
 
  public function getTDWeekend() {
    $class = '';
    $td = "td";
    if ($this->isCurrent()) {
      $class = 'today';
    }
    $this->retunrhtml .= "<$td class="$class">" . $this->getTDHref() . "</$td>";
  }
 
  protected function makeCodeMonth($year,$month);
    $this->getCalendarHeader();
    for ($i = 0; $i < count($this->week); $i++) {
      $this->getBeginTR();
      for ($j = 0; $j < 7; $j++) {
 
        if (!empty($this->week[$i][$j])) {
          $this->day = $this->week[$i][$j];
          $this->currentdate = 0;
          if ($this->year == date('Y') && $this->month == date('m') && $this->day == date('j')) {
            $this->currentdate = 1;
          }
          if ($j == 5 || $j == 6) {
            $this->weekend = 1;
            $this->getTDWeekend();
          }
          else {
            $this->weekend = 0;
            $this->getTD();
          }
 
        }
        else {
          $this->retunrhtml .= "<td> </td>";
        }
 
      }
      $this->getEndTR();
    }
    $this->getCalendarFooter();
  }
 
  public function getCodeMonth() {
    $this->makeCodeMonth($this->year,$this->month);
    return $this->retunrhtml;
  }
 
  public function showCodeMonth() {
    echo $this->getCodeMonth();
  }
 
}
 
class TechCalendarForm extends CalendarForm {
  public function getTDHref() {
    if ($this->isWeekend()) {
      $font = "<font color="#FF3F4F">";
    }
    else {
      $font = "<font color="#4A5B6C">";
    }
    return "<a href="" . $_SERVER["PHP_SELF"] . "?action=showdate&date=" . parent::getYear() . "-" . parent::getMonth() . "-" . parent::getDay() . "">" . $font . parent::getDay() . "</font></a>";
  }
}

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读