Thursday 16 August 2007

Caculate 8 UK Bank Holidays (PHP)




function get_bh($day, $month, $year) {
if ($month == 12 && $day == 25)
{
return 1; //Xmas
}
if ($month == 12 && $day == 26)
{
return 1; //Boxing
}
if ($month == 5 && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) == 1) && $day <=7) { return 1; //May Day } $c = floor($year/100); $n = $year-19*floor($year/19); $k = floor(($c-17)/25); $i = $c-floor($c/4)-floor(($c-$k)/3)+19*$n+15; $i = $i-30*floor($i/30); $i = $i-floor($i/28)*(1-floor($i/28))*floor(29/($i+1))*(floor(21-$n)/11); $j = $year+floor($year/4)+$i+2-$c+floor($c/4); $j = $j-7*floor($j/7); $l = $i-$j; $m = 3+floor(($l+40)/44); $d = $l+28-31*floor($m/4); if ($month == $m && $day == $d + 1) { return 1; //Easter Monday } if ($month == $m &&amp;amp;amp;amp;amp;amp; (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) == 5) && $day <= $d && $day > $d - 7)
{
return 1; //Good Friday
}
if ($month == 1 && $day == 1 && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) != 6) && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) != 0))
{
return 1; //New Year Day
} elseif ($month == 1 && $day == 2 && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) != 0) && (jddayofweek(cal_to_jd(CAL_GREGORIAN, 1, 1, $year), 0) == 0))
{
return 1;
} elseif ($month == 1 && $day == 3 && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, 2, $year), 0) == 0) && (jddayofweek(cal_to_jd(CAL_GREGORIAN, 1, 1, $year), 0) == 6))
{
return 1;
}
if ($month == 5 && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) == 1) && $day >= 25)
{
return 1;
}
if ($month == 8 && (jddayofweek(cal_to_jd(CAL_GREGORIAN, $month, $day, $year), 0) == 1) && $day >= 25)
{
return 1;
}
}

No comments: