Files
votianng/html/include/calendar.inc.php
2026-03-29 10:34:57 +02:00

254 lines
8.1 KiB
PHP

<?php
/*=======================================================================
*
* calendar.inc.php
*
* Autor: Carsten Annacker
*
=======================================================================*/
/*
* Quellen:
* - Algorithmen zur Datumsberechnung
* http://home.nordwest.net/hgm/kalender/kal-6.htm
* - Claus Toenderings Calendar-FAQ
* http://www.tondering.dk/claus/calendar.html
* - Anregungen aus
* http://homepages.muenchen.org/bm612973/kalender.html,
* http://www.jandankert.de/service/sonstiges/kalender.html)
*
*/
function weekDayName($wDay)
{
$weekDayArr = array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
return $weekDayArr[$wDay];
}
function weekDayNameMapping($dayName, $mode = "0") {
$retDayName = "";
if ($mode == "1") :
if ($dayName == "Monday") : $retDayName = "Montag"; endif;
if ($dayName == "Tuesday") : $retDayName = "Dienstag"; endif;
if ($dayName == "Wednesday") : $retDayName = "Mittwoch"; endif;
if ($dayName == "Thursday") : $retDayName = "Donnerstag"; endif;
if ($dayName == "Friday") : $retDayName = "Freitag"; endif;
if ($dayName == "Saturday") : $retDayName = "Sonnabend"; endif;
if ($dayName == "Sunday") : $retDayName = "Sonntag"; endif;
else :
if ($dayName == "Monday") : $retDayName = weekDayName(0); endif;
if ($dayName == "Tuesday") : $retDayName = weekDayName(1); endif;
if ($dayName == "Wednesday") : $retDayName = weekDayName(2); endif;
if ($dayName == "Thursday") : $retDayName = weekDayName(3); endif;
if ($dayName == "Friday") : $retDayName = weekDayName(4); endif;
if ($dayName == "Saturday") : $retDayName = weekDayName(5); endif;
if ($dayName == "Sunday") : $retDayName = weekDayName(6); endif;
endif;
return $retDayName;
}
function monthName($month)
{
$monthNameArr = array (
"Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli",
"August", "September", "Oktober", "November", "Dezember");
return $monthNameArr[--$month];
}
function leapYear ($year)
{
return (($year & 3) == 0) && ((($year % 100) != 0) || (($year % 400) == 0));
}
function daysPerMonth($year, $month)
{
$dpmArr = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$result = $dpmArr[--$month];
if ($month == 1) if (leapYear ($year)) $result++;
return $result;
}
function addDays($year, $month, $day, $days)
{
if ($days >= 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&ouml;nige');
if ($month == 5 && $day == 1) return('Maifeiertag');
if ($month == 8 && $day == 15) return(' Mari&auml; 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&szlig;- 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 .= "<a href=\"#1\">Jan.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#2\">Feb.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#3\">M&auml;r.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#4\">Apr.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#5\">Mai&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#6\">Jun&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#7\">Jul.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#8\">Aug.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#9\">Sep.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#10\">Okt.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#11\">Nov.&nbsp;&nbsp;</a>";
$ret .= "<a href=\"#12\">Dez.&nbsp;&nbsp;</a>";
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);
?>