03 December 2008

Some handy PHP date functions

//returns the date of the last day of this month
function lastDayThisMonth($offset = 0) {

return (int)strftime("%d", mktime(0, 0, 0, date("n") + $offset + 1, 0, date("Y")));

}


//returns the day of the week of a given day
function dayOfTheWeek($dd, $mm, $yyyy) {

return date("w", mktime(0, 0, 0, $mm, $dd, $yyyy));

}

//returns the date of Good Friday in yyyy-mm-dd format
function easterFriday($yyyy) {

$firstDig = 0;
$remain19 = 0;
$temp = 0;
$tA = 0;
$tB = 0;
$tC = 0;
$tD = 0;
$tE = 0;

$firstDig = floor($yyyy/100);
$remain19 = $yyyy % 19;

$temp = floor(($firstDig - 15) / 2) + 202 - 11 * $remain19;

$temp = $temp % 30;

$tA = $temp + 21;
if ($temp == 29)
$tA = $tA - 1;
if ($temp == 28 && $remain19 > 10)
$tA = $tA - 1;

$tB = ($tA - 19) % 7;
$tC = (40 - $firstDig) % 4;
if ($tC == 3)
$tC = $tC + 1;
if ($tC > 1)
$tC = $tC + 1;

$temp = $yyyy % 100;

$tD = ($temp + floor($temp / 4)) % 7;
$tE = ((20 - $tB - $tC - $tD) % 7) + 1;
$dd = $tA + $tE;

if ($dd > 31) {
$dd = $dd - 31;
$mm = 4;
} else
$mm = 3;

return strftime("%Y-%m-%d", mktime(0, 0, 0, $mm, $dd - 2, $yyyy));

}