php for 圈回,php 日曆系統中添加foreach迴圈!

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:11   2167   0

class Calendar {

public function __construct(){

$this->naviHref = htmlentities($_SERVER['PHP_SELF']);

}

/********************* PROPERTY ********************/

private $dayLabels = array("一","二","三","四","五","六","日");

private $currentYear=0;

private $currentMonth=0;

private $currentDay=0;

private $currentDate=null;

private $daysInMonth=0;

private $naviHref= null;

/********************* PUBLIC **********************/

public function show() {

@$year == null;

@$month == null;

if(null==@$year&&isset($_GET['year'])){

@$year = $_GET['year'];

}else if(null==@$year){

@$year = date("Y",time());

}

if(null==@$month&&isset($_GET['month'])){

$month = $_GET['month'];

}else if(null==@$month){

$month = date("m",time());

}

$this->currentYear=$year;

$this->currentMonth=$month;

$this->daysInMonth=$this->_daysInMonth($month,$year);

$content='<div id="calendar">'.

'<div class="box">'.

$this->_createNavi().

'</div>'.

'<div class="box-content">'.

'<ul class="label">'.$this->_createLabels().'</ul>';

$content.='<div class="clear"></div>';

$content.='<ul class="dates">';

$weeksInMonth = $this->_weeksInMonth($month,$year);

// Create weeks in a month

for( $i=0; $i<$weeksInMonth; $i++ ){

//Create days in a week

for($j=1;$j<=7;$j++){

$content.=$this->_showDay($i*7+$j);

}

}

$content.='</ul>';

$content.='<div class="clear"></div>';

$content.='</div>';

$content.='</div>';

return $content;

}

/********************* PRIVATE **********************/

private function _showDay($cellNumber){

if($this->currentDay==0){

$firstDayOfTheWeek = date('N',strtotime($this->currentYear.'-'.$this->currentMonth.'-01'));

if(intval($cellNumber) == intval($firstDayOfTheWeek)){

$this->currentDay=1;

}

}

if(($this->currentDay!=0)&&($this->currentDay<=$this->daysInMonth)){

$this->currentDate = date('Y-m-d',strtotime($this->currentYear.'-'.$this->currentMonth.'-'.($this->currentDay)));

$cellContent = $this->currentDay;

$this->currentDay++;

}else{

$this->currentDate =null;

$cellContent=null;

}

return '

<li id="li-'.$this->currentDate.'" class="'.($this->currentDate==date("Y-m-d")?'today':'').' relative '.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).

($cellContent==null?'mask':'').'">'.($cellContent==null?'':'

<span class="cellContent">'.$cellContent.'</span>

<div class="avatar_review_layout">

<span today="'.$cellContent.'" date="'.$this->currentDate.'"

class="pointer relative addicon add_'.$this->currentDate.'"><span class="plus">+</span></span>

</div>

').'</li>';

}

private function _createNavi(){

$nextMonth = $this->currentMonth==12?1:intval($this->currentMonth)+1;

$nextYear = $this->currentMonth==12?intval($this->currentYear)+1:$this->currentYear;

$preMonth = $this->currentMonth==1?12:intval($this->currentMonth)-1;

$preYear = $this->currentMonth==1?intval($this->currentYear)-1:$this->currentYear;

return

'<div class="header">'.

'<a class="prev" href="'.$this->naviHref.'?month='.sprintf('%02d',$preMonth).'&year='.$preYear.'">← '.$preMonth.' 月</a>'.

'<span class="title">'.date('Y 年 n 月',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')).'</span>'.

'<a class="next" href="'.$this->naviHref.'?month='.sprintf("%02d", $nextMonth).'&year='.$nextYear.'">'.$nextMonth.' 月 →</a>'.

'</div>';

}

private function _createLabels(){

$content='';

foreach($this->dayLabels as $index=>$label){

$content.='<li class="'.($label==6?'end title':'start title').' title">'.$label.'</li>';

}

return $content;

}

private function _weeksInMonth($month=null,$year=null){

if( null==($year) ) {

$year = date("Y",time());

}

if(null==($month)) {

$month = date("m",time());

}

// find number of days in this month

$daysInMonths = $this->_daysInMonth($month,$year);

$numOfweeks = ($daysInMonths%7==0?0:1) + intval($daysInMonths/7);

$monthEndingDay= date('N',strtotime($year.'-'.$month.'-'.$daysInMonths));

$monthStartDay = date('N',strtotime($year.'-'.$month.'-01'));

if($monthEndingDay<$monthStartDay){

$numOfweeks++;

}

return $numOfweeks;

}

private function _daysInMonth($month=null,$year=null){

if(null==($year))

$year = date("Y",time());

if(null==($month))

$month = date("m",time());

return date('t',strtotime($year.'-'.$month.'-01'));

}

}

$calendar = new Calendar();

echo $calendar->show();

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP