12){exit("月の入力が不正です\n");} $y = $_GET['y']; $m = $_GET['m']; } if($m == 2){ if($y%400 == 0 || ($y%100 != 0 && $y%4 == 0)) $day = 29; else $day = 28; } else if($m == 4 || $m == 6 || $m == 9 || $m == 11){ $day = 30; } else{ $day = 31; } $youbi = zeller($y,$m,1); echo "\n\n"; echo "\n"; for($i=0;$i<$youbi;$i++) echo "\n"; for($i=1;$i<=$day;$i++,$youbi++){ //day+youbi回ループさせる if(hantei($y,$m,$i,$youbi%7) == 2){ echo("\n"); $flag = 1; // 日曜と祝日が重なったらflagをたてる } else if(hantei($y,$m,$i,$youbi%7) == 1 || $flag == 1){ echo("\n"); $flag = 0; } else if($youbi%7 == 6){ // 土曜日 echo("\n"); } else{ printf("\n",$i); //日付を出力 $flag = 0; } if($youbi%7 == 6){echo("\n");} //土曜のあとは改行 } function zeller ($y,$m,$d) { if($m==1 || $m==2){ $y--; $m += 12; } return ($y + (int)($y/4) - (int)($y/100) + (int)($y/400) + (int)(2.6*$m + 1.6) + $d) % 7; } function hantei ($y,$m,$d,$youbi) { if(($m==3 && $d== (int)(20.8431 + 0.242194*($y-1980) - ($y-1980)/4)) // 春分の日 || ($m==9 && $d== (int)(23.2488 + 0.242194*($y-1980) - ($y-1980)/4)) // 秋分の日 || ($m==1 && $d==1) // 元旦 || ($m==1 && $d>7 && $d<15 && $youbi==1) // 成人の日 || ($m==2 && $d==11) // 建国記念日 || ($m==4 && $d==29) // みどりの日 || ($m==5 && $d==3) // 憲法記念日 || ($m==5 && $d==4) // 国民の祝日 || ($m==5 && $d==5) // 子供の日 || ($m==7 && $d>14 && $d<22 && $youbi==1) // 海の日 || ($m==9 && $d>14 && $d<22 && $youbi==1) // 敬老の日 || ($m==10 && $d>7 && $d<15 && $youbi==1) // 体育の日 || ($m==11 && $d==3) // 文化の日 || ($m==11 && $d==23) // 勤労感謝の日 || ($m==12 && $d==23))// 天皇誕生日 { if($youbi == 0){// 日曜と休日が重なった処理 return 2; } else{ return 1; } } if($youbi == 0){ // 日曜日 return 1; } return 0; } ?>
${y}年 ${m}月
SunMonTueWedThuFriSat
 "); printf("%d",$i); echo(""); printf("%d",$i); echo(""); printf("%d",$i); echo("%d