2014-07-27 3 views
1

나는 간단한 달 미리보기를 만드는 캘린더 용 클래스를 만들고 있습니다.월요일 (오프셋)로 PHP 일정 시작 주

질문 어떻게 월요일와 주 시작 (또는 오프셋)?

당신이 그림에서 보듯이

은, 주 일요일에 시작 : 여기

처럼 보이는 방법이다. 나는 월요일부터 일주일을 시작하고 싶다. 여기

output

는 내가 지금까지 무엇을 가지고 있습니다 :

코드 :

<?php 

class Calendar { 

    public function __construct($year = '', $month = '') { 

     $date = time(); 

     if (empty($year) OR empty($month)) { 
      $year = date('Y', $date); 
      $month = date('m', $date); 
      $day = date('d', $date); 
     } 

     $first_day = mktime(0, 0, 0, $month, 1, $year); 
     $title = date('F', $first_day); 
     $day_of_week = date('D', $first_day); 

     switch ($day_of_week) { 
      case "Sun": $blank = 0; 
       break; 
      case "Mon": $blank = 1; 
       break; 
      case "Tue": $blank = 2; 
       break; 
      case "Wed": $blank = 3; 
       break; 
      case "Thu": $blank = 4; 
       break; 
      case "Fri": $blank = 5; 
       break; 
      case "Sat": $blank = 6; 
       break; 
     } 

     $days_in_month = cal_days_in_month(0, $month, $year); 

     echo '<table border=1 width=394>'; 

     echo '<tr>'; 
     echo '<th colspan=60>' . $title . ' ' . $year . '</th>'; 
     echo '</tr>'; 

     echo '<tr>'; 
     echo '<td width=62>Sun</td>'; 
     echo '<td width=62>Mon</td>'; 
     echo '<td width=62>Tue</td>'; 
     echo '<td width=62>Wed</td>'; 
     echo '<td width=62>Thu</td>'; 
     echo '<td width=62>Fri</td>'; 
     echo '<td width=62>Sat</td>'; 
     echo '</tr>'; 

     $day_count = 1; 

     while ($blank > 0) { 
      echo '<td></td>'; 
      $blank = $blank - 1; 
      $day_count++; 
     } 

     $day_num = 1; 

     while ($day_num <= $days_in_month) { 

      echo '<td>' . $day_num . '</td>'; 
      $day_num++; 
      $day_count++; 

      if ($day_count > 7) { 
       echo '</tr><tr>'; 
       $day_count = 1; 
      } 
     } 

     while ($day_count > 1 && $day_count <= 7) { 
      echo '<td> </td>'; 
      $day_count++; 
     } 

     echo '</tr>'; 

     echo '</table>'; 
    } 

} 

$c = new Calendar(2014, 6); 
+0

당신이 묻고있는 것을 더 자세히 설명 할 수 있습니까? – SpencerX

+0

그림에서 보듯이 일요일부터 시작됩니다. 나는 월요일부터 일주일을 시작하고 싶다. –

답변

1

이 같은 것을보십시오 :

class Calendar { 

    public function __construct($year = '', $month = '') { 

     $date = time(); 

     if (empty($year) OR empty($month)) { 
      $year = date('Y', $date); 
      $month = date('m', $date); 
      $day = date('d', $date); 
     } 

     $first_day = mktime(0, 0, 0, $month, 1, $year); 
     $title = date('F', $first_day); 
     $day_of_week = date('D', $first_day); 

     switch ($day_of_week) { 
      case "Mon": $blank = 0; 
       break; 
      case "Tue": $blank = 1; 
       break; 
      case "Wed": $blank = 2; 
       break; 
      case "Thu": $blank = 3; 
       break; 
      case "Fri": $blank = 4; 
       break; 
      case "Sat": $blank = 5; 
       break; 
      case "Sun": $blank = 6; 
       break; 
     } 

     $days_in_month = cal_days_in_month(0, $month, $year); 

     echo '<table border=1 width=394>'; 

     echo '<tr>'; 
     echo '<th colspan=60>' . $title . ' ' . $year . '</th>'; 
     echo '</tr>'; 

     echo '<tr>'; 
     echo '<td width=62>Mon</td>'; 
     echo '<td width=62>Tue</td>'; 
     echo '<td width=62>Wed</td>'; 
     echo '<td width=62>Thu</td>'; 
     echo '<td width=62>Fri</td>'; 
     echo '<td width=62>Sat</td>'; 
     echo '<td width=62>Sun</td>'; 
     echo '</tr>'; 

     $day_count = 1; 

     while ($blank > 0) { 
      echo '<td></td>'; 
      $blank = $blank - 1; 
      $day_count++; 
     } 

     $day_num = 1; 

     while ($day_num <= $days_in_month) { 

      echo '<td>' . $day_num . '</td>'; 
      $day_num++; 
      $day_count++; 

      if ($day_count > 7) { 
       echo '</tr><tr>'; 
       $day_count = 1; 
      } 
     } 

     while ($day_count > 1 && $day_count <= 7) { 
      echo '<td> </td>'; 
      $day_count++; 
     } 

     echo '</tr>'; 

     echo '</table>'; 
    } 

} 

$c = new Calendar(2014, 6); 

OUTPUT
enter image description here

+0

작은 코드로 포맷하십시오.'print_array ($ first_day) ;;;;; ' –

+0

나는 그 중 하나를 잊어 버렸습니다! 답변 됨 업데이트 됨 :) – SpencerX

관련 문제