php календарь - запуск календаря с понедельника - PullRequest
0 голосов
/ 13 марта 2020

У меня есть календарь в php, который отображает представление месяца за данный месяц. Там неделя начинается с воскресенья и заканчивается в субботу за столом. В основном это добавляет новую строку таблицы, если неделя заканчивается. я хочу, чтобы это начиналось с понедельника и заканчивалось в воскресенье. Вот мой код Календарь на март 2020 года приведен по этой ссылке. Текущее изображение результата

// 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;

1 Ответ

0 голосов
/ 13 марта 2020

Измените следующие переменные: $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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...