パソコンQ&A

祝日を計算で求めてみる

祝日だとTrueを返す関数

ただし春分の日と秋分の日は明確に決められていないので注意。
春分と秋分を日本政府が計算して、春分の日と秋分の日が発表されています。

function Holiday_check($year,$month,$day){
//正月1月1日
  if($month==1 && $day==1){
    return true;
  }
//成人の日1月第2月曜
//振り替えの項

//建国記念の日 2月11日
  if($month==2 && $day==11){
    return true;
  }
//春分の日 春分日 3月
  if($month==3 && 1980<=$year && $year<2100){
    if($day==intval(20.8431+0.242194*($year-1980)-intval(($year-1980)/4)))
      return true;
  }
  if($month==3 && 2100<=$year && $year<2150){
    if($day==intval(21.8510+0.242194*($year-1980)-intval(($year-1980)/4)))
      return true;
  }
//昭和の日4月29日
  if($month==4 && $day==29){
    return true;
  }
//憲法記念日 5月 3日
  if($month==5 && $day==3){
    return true;
  }
//みどりの日 5月 4日
  if($month==5 && $day==4){
    return true;
  }
//こどもの日 5月 5日
  if($month==5 && $day==5){
    return true;
  }
//海の日7月第3月曜日
//振り替えの項

//敬老の日9月第3月曜日
//振り替えの項

//秋分の日 秋分日 9月
  if($month==9){
    $syun=0;

    if(1980<=$year && $year<2100){
      $syun=intval(23.2488+0.242194*($year-1980)-intval(($year-1980)/4));
    }elseif(2100<=$year && $year<2150){
      $syun=intval(24.2488+0.242194*($year-1980)-intval(($year-1980)/4));
    }

    if($day==$syun){
      return true;
    }

    if($day+1==$syun && date('w',mktime(0,0,0,$month,$day,$year))==2 && 7*2<$day-1 && $day-1<=7*3)
      return true;
  }

//体育の日10月第2月曜
//振り替えの項

//文化の日 11月 3日
  if($month==11 && $day==3){
    return true;
  }
//勤労感謝の日 11月23日
  if($month==11 && $day==23){
    return true;
  }
//天皇誕生日 12月23日
  if($month==12 && $day==23){
    return true;
  }


//振り替えの項
  if(date('w',mktime(0,0,0,$month,$day,$year))==1){
//正月1月1日
    if($month==1 && $day==2){
      return true;
    }
//成人の日1月第2月曜
    if($month==1 && 7*1<$day && $day<=7*2){
      return true;
    }

//建国記念の日 2月11日
    if($month==2 && $day==12){
      return true;
    }
//春分の日 春分日 3月
    if($month==3 && 1980<=$year && $year<2100){
      if($day==1+intval(20.8431+0.242194*($year-1980)-intval(($year-1980)/4)))
        return true;
    }
    if($month==3 && 2100<=$year && $year<2150){
      if($day==1+intval(21.8510+0.242194*($year-1980)-intval(($year-1980)/4)))
        return true;
    }
//昭和の日4月29日
    if($month==4 && $day==30){
      return true;
    }
//憲法記念日 5月 3日
    if($month==5 && $day==4){
      return true;
    }
//みどりの日 5月 4日
    if($month==5 && $day==5){
      return true;
    }
//こどもの日 5月 5日
    if($month==5 && $day==6){
      return true;
    }
//海の日7月第3月曜日
    if($month==7 && 7*2<$day && $day<=7*3){
      return true;
    }
//敬老の日9月第3月曜日
    if($month==9 && 7*2<$day && $day<=7*3){
      return true;
    }
//秋分の日 秋分日 9月
  if($month==9 && 1980<=$year && $year<2100){
    if($day==1+intval(23.2488+0.242194*($year-1980)-intval(($year-1980)/4)))
      return true;
  }
  if($month==9 && 2100<=$year && $year<2150){
    if($day==1+intval(24.2488+0.242194*($year-1980)-intval(($year-1980)/4)))
      return true;
  }
//体育の日10月第2月曜
    if($month==10 && 7*1<$day && $day<=7*2){
      return true;
    }
//文化の日 11月 3日
    if($month==11 && $day==4){
      return true;
    }
//勤労感謝の日 11月23日
    if($month==11 && $day==24){
      return true;
    }
//天皇誕生日 12月23日
    if($month==12 && $day==24){
      return true;
    }
  }
  return false;
}


△上に戻る

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net