dongxiang3205 2016-01-12 19:24
浏览 11
已采纳

如何从每周删除最后两天?

I have a calendar (that i found on google) and modified it. However, the original calendar has 7 days in a week (Mon - Sun) I just need Mon- Fri.
The calendar is created with <table><tr><td>.

I tried so many things including creating only 5 <td>. However, if I just create 5 <td> then the 6th will be the next number after the 5th, for example; Fri is day 1st, and so Mon will be day 2nd, but Mon should be day 4th.

Here is the code:

 class Calendar {  

/**
 * Constructor
 */
public function __construct(){     
    $this->naviHref = htmlentities($_SERVER['PHP_SELF']);
}

/********************* PROPERTY ********************/  
private $dayLabels = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

private $currentYear=0;

private $currentMonth=0;

private $currentDay=0;

private $currentDate=null;

private $daysInMonth=0;

private $naviHref= null;

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

/**
* print out the calendar
*/
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='<fieldset>'. 
             '<legend class="cyan bold">Tutors Schedule</legend>'.

                    //head nav '<' & '>' buttons & month 
                    $this->_createNavi().
                    //end head


                    '<table class="table table-bordered">'.

                        '<thead>'.
                             '<tr>'.$this->_createLabels().'</tr>' .
                        '</thead>' .

                        '<tbody>'.




                          '<tr>';


                            $weeksInMonth = $this->_weeksInMonth($month,$year);
                            // Create weeks in a month

                            for( $i=0; $i<$weeksInMonth; $i++ ){
                                //$content .= "<tr>";

                                    //Create days in a week
                                    for($j=1;$j<=7;$j++){

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

      //                                           
                                    } 

                                  $content .="</tr>";  
                            }



                         '</tbody>'.
                    '</table>';

   '</fieldset>';
    return $content;   
}

/********************* PRIVATE **********************/ 
/**
* create the td element for tr
*/
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('m-d-Y',strtotime($this->currentYear.'-'.$this->currentMonth.'-'.($this->currentDay)));

        $cellContent = $this->currentDay;

        $this->currentDay++;   

    }else{

        $this->currentDate =null;

        $cellContent=null;
    }

    return '<td id="'.$this->currentDate.'" class=" td-top-text '.($cellNumber%7==1 ?' start ':($cellNumber%7==0 ?' end ':' ')).
            ($cellContent==null?'mask':'').'"><div class="inside">'.$cellContent.'</div></td>';

   }


   /**
* calculate number of weeks in a particular month
*/
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;
}

/**
* calculate number of days in a particular month
*/
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'));
    }


 }

This is how the calendar looks like now:

enter image description here

What I am trying to do; enter image description here

Testing:

Application.php

$calendar = new Calendar();
echo $calendar->show();

Thank you!

EDIT:

if I change this:

private $dayLabels = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
//Create days in a week
     for($j=1;$j<=7;$j++){

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

To this:

 private $dayLabels = array("Monday","Tuesday","Wednesday","Thursday","Friday");
//Create days in a week
     for($j=1;$j<=5;$j++){

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

I will get this:

enter image description here

  • 写回答

2条回答 默认 最新

  • douhe2305 2016-01-12 19:34
    关注

    Choosing the easiest route, use css :)

    .calendar td:nth-child(n+6) {
        display: none;
    }
    

    Here we assume that your calendar has a css class of calendar.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!