2014-07-27 28 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); 

輸出
enter image description here

+0

格式化一點你的代碼,'print_array($ first_day);;;;;;' –

+0

哈哈,我忘了那裏!回答更新:) – SpencerX

相關問題