php 日历类 日历控件
2018-07-20 来源:open-open
<?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, 0, 0, $month, $this->day_count, $year)); } private function setDayOfMonth($year, $month) { $this->dayofmonth = $this->getDayOfMonth($year, $month); } private function getDayOfWeek() { return date('w', mktime(0, 0, 0, $this->month, $this->day_count, $this->year)); } public function getNextMonth() { return date('m', mktime(0, 0, 0, $this->month, 28, $this->year) + 432000); } public function getNextYear() { return date('Y', mktime(0, 0, 0, $this->month, 28, $this->year) + 432000); } public function getPrevMonth() { return date('m', mktime(0, 0, 0, $this->month, 1, $this->year) - 432000); } public function getPrevYear() { return date('Y', mktime(0, 0, 0, $this->month, 1, $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->makeWeeks($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>"; } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐