Eine Feiertagsberechnung aufgrund der Osterformel
/// <summary>
/// Teste das übergeben Datum auf einen Feiertag
/// </summary>
/// <param name="DateTime">Das Datum, daß auf einen Beweglichen Feiertag geprüft werden soll</param>
/// <returns>Wenn das übergebene Datum auf einen Feriertag fällt dan wird dieser Feiertag zurückgegeben</returns>
public string GetFeiertag(DateTime myDatum){
string feierTag = "";
// Datum zerlegen und für den Test eines FEsten Feiertages zusammenbauen
String testDate = (myDatum.Day.ToString() +"/"+ myDatum.Month.ToString());
switch(testDate){
case "1/1":
feierTag = "Neujahr";
break;
case "1/5":
feierTag = "Tag der Arbeit";
break;
case "15/8":
feierTag = "Mariae Himmelfahrt";
break;
case "3/10":
feierTag = "Tag der dt. Einheit";
break;
case "1/11":
feierTag = "Allerheiligen";
break;
case "25/12":
feierTag = "1. Weihnachtstag";
break;
case "26/12":
feierTag = "2. Weihnachtstag";
break;
default:
feierTag = GetMovFeierTag(myDatum);
break;
}
return feierTag;
}
/// <summary>
/// Teste das übergeben Datum auf einen Beweglichen Feiertag
/// </summary>
/// <param name="DateTime">Das Datum, daß auf einen Beweglichen Feiertag geprüft werden soll</param>
/// <returns>Der bewegliche Feiertag oder halt nichts</returns>
private String GetMovFeierTag(DateTime myDatum){
int Jahr = myDatum.Year;
DateTime Ostersonntag = GetOstersonntag(Jahr);
if (myDatum == Ostersonntag.AddDays(0)){
return "OsterSonntag";
}
if (myDatum == Ostersonntag.AddDays(-2)){
return "Karfreitag";
}
if (myDatum == Ostersonntag.AddDays(1)){
return "Ostermontag";
}
if (myDatum == Ostersonntag.AddDays(39)){
return "Christi Himmelfahrt";
}
if (myDatum == Ostersonntag.AddDays(49)){
return "Pfingstsonntag";
}
if (myDatum == Ostersonntag.AddDays(50)){
return "Pfingstmontag";
}
if (myDatum == Ostersonntag.AddDays(60)){
return "Fronleichnam";
}
return "";
}
/// <summary>
/// Errechnet das Datum des Ostersonntags aus dem übergebenen Jahr
/// </summary>
/// <param name="int">Das Jahr in YYYY Schreibweise</param>
/// <returns>Das Datum des Ostersonntags in dem Übergebe Jahr</returns>
private DateTime GetOstersonntag(int jahr){
DateTime OsterSonntag;
int c;
int i;
int j;
int k;
int l;
int n;
int OsterTag;
int OsterMonat;
c = jahr / 100;
n = jahr - 19 * ((int)(jahr / 19));
k = (c - 17) / 25;
i = c - c / 4 - ((int)(c - k) / 3) + 19 * n + 15;
i = i - 30 * ((int)(i / 30));
i = i - (i / 28) * ((int)(1 - (i / 28)) * ((int)(29 / (i + 1))) * ((int)(21 - n) / 11));
j = jahr + ((int)jahr / 4) + i + 2 - c + ((int)c / 4);
j = j - 7 * ((int)(j / 7));
l = i - j;
OsterMonat = 3 + ((int)(l + 40) / 44);
OsterTag = l + 28 - 31 * ((int)OsterMonat / 4);
return Convert.ToDateTime(OsterTag.ToString() + "." + OsterMonat + "." + jahr);
}
5 Kommentare zum Snippet