= 0)
{
$day += $days;
while ($day > daysPerMonth($year, $month))
$day -= daysPerMonth($year, $month++);
} else {
$day += $days;
while ($day <= 0)
$day += daysPerMonth($year, $month--);
}
return(array($month, $day));
}
function addMonths($year, $month, $months)
{
if ($months >= 0)
{
$month += $months;
while ($month > 12)
{
$month -= 12;
$year++;
}
} else {
$month += $months;
while ($month <= 0)
{
$month += 12;
$year--;
}
}
return(array($year, $month));
}
function easterSunday($year) {
$K = floor($year / 100);
$h = floor((3 * $K + 3) / 4);
$M = 15 + $h - floor((8 * $K + 13) / 25);
$S = 2 - $h;
$A = $year % 19;
$B = floor($year/4);
$D = (19* $A + $M) % 30;
$R = floor($D / 29) + (floor($D / 28) - floor($D / 29)) * floor($A / 11);
$OG = 21 + $D - $R;
$SZ = 7 - (($year + $B + $S) % 7);
$OE = 7 - (($OG - $SZ) % 7);
return (addDays($year, 3, 1, ($OG + $OE) - 1));
}
/*
* Bundesweite gesetzliche Feiertage:
* - Neujahr (1. Januar)
* - Karfreitag (erster Freitag vor Ostern)
* - Ostermontag (Ostersonntag ist der erste Sonntag nach dem ersten Vollmond nach der
* Frühlings-Tagundnachtgleiche (Vernal Equinox).
* - Maifeiertag, Tag der Arbeit (1. Mai)
* - Christi Himmelfahrt (sechster Donnerstag nach Ostern)
* - Pfingstmontag (siebter Montag nach Ostermontag)
* - Tag der deutschen Einheit (3. Oktober)
* - 1. Weihnachtstag (25. Dezember)
* - 2. Weihnachtstag (26. Dezember)
*
* Gesetzliche Feiertage nur in einigen Bundesländern:
* - Heilige Drei Könige (6. Januar; Baden-Württemberg, Bayern und Sachsen-Anhalt)
* - Fronleichnam (zweiter Donnerstag nach Pfingsten; Baden-Württemberg, Bayern, Hessen,
* Nordrhein-Westfalen, Rheinland-Pfalz, im Saarland und in einigen Gemeinden in
* Sachsen und Thüringen)
* - Mariä Himmelfahrt (15. August; Bayern, in Gemeinden mit überwiegend katholischer
* Bevölkerung und im Saarland)
* - Reformationstag (31. Oktober; Brandenburg, Mecklenburg-Vorpommern, Sachsen,
* Sachsen-Anhalt, Thüringen)
* - Allerheiligen (1. November; Baden-Württemberg, Bayern, Nordrhein-Westfalen,
* Rheinland Pfalz, Saarland)
* - Buß- und Bettag (zweiter Mittwoch vor dem ersten Advent; Sachsen)
*
* Quelle: http://www.kalenderlexikon.de/Kalender/FeierGesetz.htm
*
*/
function feiertag($year, $month, $day)
{
if ($month == 1 && $day == 1) return('Neujahr');
// if ($month == 1 && $day == 6) return(' Heilige Drei Könige');
if ($month == 5 && $day == 1) return('Maifeiertag');
if ($month == 8 && $day == 15) return(' Mariä Himmelfahrt');
if ($year > 1989 && $month == 10 && $day == 3) return('Tag der deutschen Einheit');
// if ($month == 10 && $day == 31) return(' Reformationstag');
// if ($month == 11 && $day == 1) return(' Allerheiligen');
if ($month == 12 && $day == 25) return('1. Weihnachtstag');
if ($month == 12 && $day == 26) return('2. Weihnachtstag');
// if ($month == 11)
// {
// $fourthAdvent = 24 - date ("w", mktime(0, 0, 0, 12, 24, $year));
// if (day == (fourthAdvent - 2)) return( ' Buß- und Bettag');
// }
if ($month == 3 || $month == 4 || $month == 5 || $month == 6)
{
$easter = easterSunday($year);
if ($month == $easter[0] && $day == $easter[1]) return('Ostersonntag');
$tempDate = addDays($year, $easter[0], $easter[1], -2);
if ($month == $tempDate[0] && $day == $tempDate[1]) return('Karfreitag');
$tempDate = addDays($year, $easter[0], $easter[1], 1);
if ($month == $tempDate[0] && $day == $tempDate[1]) return('Ostermontag');
$tempDate = addDays($year, $easter[0], $easter[1], 39);
if ($month == $tempDate[0] && $day == $tempDate[1]) return('Himmelfahrt');
$tempDate = addDays($year, $easter[0], $easter[1], 50);
if ($month == $tempDate[0] && $day == $tempDate[1]) return('Pfingstmontag');
$tempDate = addDays($year, $easter[0], $easter[1], 60);
if ($month == $tempDate[0] && $day == $tempDate[1]) return(' Fronleichnam');
}
// if (date ("w", mktime(0, 0, 0, $month, $day, $year)) == 6)
// return ('Samstag');
if (date ("w", mktime(0, 0, 0, $month, $day, $year)) == 0)
return ('Sonntag');
return('');
}
function addDaysComplete($year, $month, $day, $days)
{
if ($days >= 0)
{
$day += $days;
while ($day > daysPerMonth($year, $month))
{
$day -= daysPerMonth($year, $month++);
if ($month == 13)
{
$month = 1;
$year++;
}
}
} else {
$day += $days;
while ($day <= 0)
{
$day += daysPerMonth($year, $month--);
if ($month == 0)
{
$month = 12;
$year--;
}
}
}
return(array($year, $month, $day));
}
function getMonthAnchorLinks() {
$ret = "";
$ret .= "Jan. ";
$ret .= "Feb. ";
$ret .= "Mär. ";
$ret .= "Apr. ";
$ret .= "Mai ";
$ret .= "Jun ";
$ret .= "Jul. ";
$ret .= "Aug. ";
$ret .= "Sep. ";
$ret .= "Okt. ";
$ret .= "Nov. ";
$ret .= "Dez. ";
return $ret;
}
//include_once("../include/dbglobal.inc.php");
//$dateArr = array(2004, 1, 0);
//do {
// $dateArr = addDaysComplete($dateArr[0], $dateArr[1], $dateArr[2], 1);
// $dayName = feiertag($dateArr[0], $dateArr[1], $dateArr[2]);
// if ($dayName != "" && substr($dayName, 0, 1) != " ") {
// insertStmt("publicholiday", array("ph_year", $dateArr[0], "ph_month", $dateArr[1], "ph_day", $dateArr[2], "ph_name", $dayName));
// }
//} while ($dateArr[0] <= 2012);
?>