PHP日历-从星期一开始日历

时间:2020-03-13 16:20:45

标签: php calendar

我在php中有一个日历,显示给定月份的月份视图。在表格中,星期从星期日开始,到星期六结束。基本上,如果一周结束,它将添加一个新的表行。 我希望它从星期一开始,从星期几开始,到星期日结束。 这是我的代码。 2020年3月的日历会在此链接中显示。 Current Result Image

// Create array containing abbreviations of days of week.
 $daysOfWeek = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

 // What is the first day of the month in question?
 $firstDayOfMonth = mktime(0,0,0,$month,1,$year);

 // How many days does this month contain?
 $numberDays = date('t',$firstDayOfMonth);

 // Retrieve some information about the first day of the
 // month in question.
 $dateComponents = getdate($firstDayOfMonth);

 // What is the name of the month in question?
 $monthName = $dateComponents['month'];

 // What is the index value (0-6) of the first day of the
 // month in question.
 $dayOfWeek = $dateComponents['wday'];

 // Create the table tag opener and day headers

$datetoday = date('Y-m-d');



$calendar = "<table class='table table-bordered'>";


  $calendar .= "<tr>";

 // Create the calendar headers

 foreach($daysOfWeek as $day) {
      $calendar .= "<th  class='header'>$day</th>";
 } 

 // Create the rest of the calendar

 // Initiate the day counter, starting with the 1st.

 $currentDay = 1;

 $calendar .= "</tr><tr>";

 // The variable $dayOfWeek is used to
 // ensure that the calendar
 // display consists of exactly 7 columns.

 if ($dayOfWeek > 0) { 
     for($k=0;$k<$dayOfWeek;$k++){
            $calendar .= "<td  class='empty'></td>"; 

     }
 }


 $month = str_pad($month, 2, "0", STR_PAD_LEFT);

 while ($currentDay <= $numberDays) {

      // Seventh column (Saturday) reached. Start a new row.

      if ($dayOfWeek == 7) {

           $dayOfWeek = 0;
           $calendar .= "</tr><tr>";

      }

        $currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
        $date = "$year-$month-$currentDayRel";

        $dayname = strtolower(date('l', strtotime($date)));

         $calendar.="<td><h4>$currentDay</h4></td>";






      // Increment counters

      $currentDay++;
      $dayOfWeek++;

 }



 // Complete the row of the last week in month, if necessary

 if ($dayOfWeek != 7) { 

      $remainingDays = 7 - $dayOfWeek;
        for($l=0;$l<$remainingDays;$l++){
            $calendar .= "<td class='empty'></td>"; 

     }

 }

 $calendar .= "</tr>";

 $calendar .= "</table>";

 echo $calendar;

2 个答案:

答案 0 :(得分:0)

更改以下变量: $daysOfWeek = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');

$firstDayOfMonth = mktime(0,0,0,$month,1,$year) - 1;

// Create array containing abbreviations of days of week.
 $daysOfWeek = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');

 // What is the first day of the month in question?
 $firstDayOfMonth = mktime(0,0,0,$month,1,$year) - 1;

 // How many days does this month contain?
 $numberDays = date('t',$firstDayOfMonth);

 // Retrieve some information about the first day of the
 // month in question.
 $dateComponents = getdate($firstDayOfMonth);

 // What is the name of the month in question?
 $monthName = $dateComponents['month'];

 // What is the index value (0-6) of the first day of the
 // month in question.
 $dayOfWeek = $dateComponents['wday'];

 // Create the table tag opener and day headers
 $datetoday = date('Y-m-d');
 $calendar = "<table class='table table-bordered'>";
 $calendar .= "<tr>";

 // Create the calendar headers
 foreach($daysOfWeek as $day) {
      $calendar .= "<th  class='header'>$day</th>";
 } 

 // Create the rest of the calendar
 // Initiate the day counter, starting with the 1st.
 $currentDay = 1;
 $calendar .= "</tr><tr>";

 // The variable $dayOfWeek is used to
 // ensure that the calendar
 // display consists of exactly 7 columns.
 if ($dayOfWeek > 0) { 
     for($k=0;$k<$dayOfWeek;$k++){
            $calendar .= "<td  class='empty'></td>"; 
     }
 }

 $month = str_pad($month, 2, "0", STR_PAD_LEFT);

 while ($currentDay <= $numberDays) {
      // Seventh column (Saturday) reached. Start a new row.
      if ($dayOfWeek == 7) {
           $dayOfWeek = 0;
           $calendar .= "</tr><tr>";
      }
      $currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
      $date = "$year-$month-$currentDayRel";
      $dayname = strtolower(date('l', strtotime($date)));
      $calendar.="<td><h4>$currentDay</h4></td>";

 // Increment counters
      $currentDay++;
      $dayOfWeek++;
 }

 // Complete the row of the last week in month, if necessary
 if ($dayOfWeek != 7) { 
      $remainingDays = 7 - $dayOfWeek;
        for($l=0;$l<$remainingDays;$l++){
            $calendar .= "<td class='empty'></td>"; 
     }
 }

 $calendar .= "</tr>";
 $calendar .= "</table>";
 echo $calendar;

答案 1 :(得分:0)

更改以下内容以使其正常工作

$daysOfWeek = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'];

$firstDayOfMonth = mktime(0,0,0,$month,7,$year);