0

私は PHP の初心者ですが、PHP を使用して次のようなカレンダーを作成したいと考えています。わからないことがあります。

  1. 月の最初の日を取得する方法は日曜日か別ですか?

  2. 月のすべての日を出力して今日を強調する方法は?

ここに画像の説明を入力

コード:

<table  cellspacing="0" cellpadding="3" bordercolor="#000000" border="1" style="width: 105px; border-collapse: collapse;">
    <tbody>
    <tr>
        <td colspan="7"><?php echo date('F')." ".date('Y');?></td>
    </tr>
     <tr>
         <td>Su</td>
         <td>M</td>
         <td>Tu</td>
         <td>W</td>
         <td>Th</td>
         <td>F</td>
         <td>Sa</td>
     </tr>
     <?php
   $numrows = ceil(date('t')/7);
   for($k=1;$k<=$numrows;$k++){

         ?>
      <tr><td></td></tr>
        <?php }?>

    </tbody>
</table>

次の日を出力する方法がわかりません。

4

2 に答える 2

3

月の最初の日

date('d', strtotime('2012-04-01')); 

年と月を、確認する実際の年と月に置き換えます。01初日はお任せください。

http://php.net/manual/en/function.date.php

月の出力日数と今日の強調

2番目のパラメーターなしで使用date()して、現在の時刻を任意の形式で取得できます。月の日を出力するには、それらをどのようにフォーマットするかを知る必要があるので、それを理解するのはあなた次第です。ただし、特定の月の日数を取得するには、次を使用できます。

date('t')

月の長さに応じて、28から31までの数値が返されます。

あなたは本当にこれを読むべきです: http ://www.php.net/manual/en/ref.datetime.php

于 2012-04-29T06:25:56.000 に答える
0

http://jqueryui.com/demos/datepicker/が利用可能になった現在、これらのことは必要ありませんが、必要な場合は、約 10 年前に私が書いたコードをご覧ください :)

<? 
  function my_calendar($fill=array()) { 
  if (isset($_GET['y'])) $y=$_GET['y'];
  if (isset($_GET['m'])) $m=$_GET['m']; 
  if (isset($_GET['date']) AND strstr($_GET['date'],"-")) list($y,$m)=explode("-",$_GET['date']);
  if (!isset($y) OR $y < 1970 OR $y > 2037) $y=date("Y");
  if (!isset($m) OR $m < 1 OR $m > 12) $m=date("m");

  $month_stamp=mktime(0,0,0,$m,1,$y);
  $month_name=date("M",$month_stamp);
  $day_count=date("t",$month_stamp);
  $weekday=date("w",$month_stamp);
  if ($weekday==0) $weekday=7;
  $start=-($weekday-2);
  $last=($day_count+$weekday-1) % 7;
  if ($last==0) $end=$day_count; else $end=$day_count+7-$last;
  $today=date("Y-m-d");
  $prev=date('?\m=m&\y=Y',mktime (0,0,0,$m-1,1,$y));  
  $next=date('?\m=m&\y=Y',mktime (0,0,0,$m+1,1,$y));
  $i=0;
?> 
<table border=1 cellspacing=0 cellpadding=2> 
 <tr>
  <td colspan=7> 
   <table width="100%" border=0 cellspacing=0 cellpadding=0> 
    <tr> 
     <td align="left"><a href="<? echo $prev ?>">&lt;&lt;&lt;</a></td> 
     <td align="center"><? echo $month_name," ",$y ?></td> 
     <td align="right"><a href="<? echo $next ?>">&gt;&gt;&gt;</a></td> 
    </tr> 
   </table> 
  </td> 
 </tr> 
 <tr><td>Mon</td><td>Tue</td><td>Wed</td><td>Th</td><td>Fri</td><td>Sat</td><td>Sun</td><tr>
<? 
  for($d=$start;$d<=$end;$d++) { 
    if (!($i++ % 7)) echo " <tr>\n";
    echo '  <td align="center">';
    if ($d < 1 OR $d > $day_count) {
      echo "&nbsp";
    } else {
      $now="$y-$m-".sprintf("%02d",$d);
      if (is_array($fill) AND in_array($now,$fill)) {
        echo '<b><a href="'.$_SERVER['PHP_SELF'].'?date='.$now.'">'.$d.'</a></b>'; 
      } else {
        echo $d;
      }
    } 
    echo "</td>\n";
    if (!($i % 7))  echo " </tr>\n";
  } 
?>
</table> 
<? } ?> 

使用例

<? 
if (isset($_GET['date'])) echo "Date picked: ".$_GET['date'];
my_calendar(array(date("Y-m-d"))); 
?>

ただし、月曜日が最初に表示されます。日曜日にするには、いくつかの行を削除する必要があります

于 2012-04-29T09:13:06.280 に答える