php 日历源码

相关标签: # css# html# php
date_default_timezone_set("Asia/shanghai");
class CalendarForm {
private $year;
private $month;
private $day;
private $weekend;
private $currentdate;
private $dayofmonth;
private $day_count;
private $num;
private $week = array();
private $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 =
"
"
.
"".
"".$this->month."/".$this->year."".
"".
"周一".
"周二".
"周三".
"周四".
"周五".
"周六".
"周日".
"";
}
public function getCalendarFooter() {
$this->retunrhtml.="";
}
public function getBeginTR() {
$this->retunrhtml.="";
}
public function getEndTR() {
$this->retunrhtml.="";
}
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() {
$td="td"; if ($this->isCurrent()) $td="th";
$this->retunrhtml.="<$td style=\"text-align: right;\">".$this->getTDHref()."</$td>";
}
public function getTDWeekend() {
$td="td"; if ($this->isCurrent()) $td="th";
$this->retunrhtml.="<$td style=\"text-align: right;\">".$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.="
";
}
$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 = ""; else $font = "";
return ".$_SERVER["PHP_SELF"]."?action=showdate&date=".parent::getYear()."-".parent::getMonth()."-".parent::getDay()."\">".$font.parent::getDay()."";
}
}
?>
<html>
<head>
<style type="text/css">
.align-center{
margin:0 auto; /* 居中 这个是必须的,,其它的属性非必须 */
width:789px; /* 给个宽度 顶到浏览器的两边就看不出居中效果了 */
// background:red; /* 背景色 */
text-align:center; /* 文字等内容居中 */
}
</style>
</head>
<body>
<div class="align-center">
//$cal= new TechCalendarForm(2009,10);
$cal= new CalendarForm(2009,10);
$cal->showCodeMonth();
?>
</div>
</body>
</html>
文章来源: https://blog.51cto.com/u_13700957/5282603
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报