1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| unit Unit2;
interface
uses Windows, SysUtils;
type THoliday = Record Date: TDateTime; Name: String; End; THolidayTable = Array Of THoliday;
Function GetHolidayTable(Year: Word): THolidayTable;
implementation
Function GetHolidayTable(Year: Word): THolidayTable;
Procedure AddHoliday(DD, MM: Word; HDName: String); Overload; Begin SetLength(Result, High(Result) + 2); With Result[High(Result)] Do Begin Date := EncodeDate(Year, MM, DD); Name := HDName; End; End;
Procedure AddHoliday(HDDate: TDateTime; HDName: String); Overload; Begin SetLength(Result, High(Result) + 2); With Result[High(Result)] Do Begin Date := HDDate; Name := HDName; End; End;
Function GetEasterDate(YYYY: Word): TDateTime; Var A, B, C, D, E, F, G, H, I, K, L, M, N, P: Word; DD, MM: Word; Begin a := YYYY Mod 19; b := YYYY Div 100; c := YYYY Mod 100; d := b Div 4; e := b Mod 4; f := (b + 8) Div 25; g := (b - f + 1) Div 3; h := (19 * a + b - d - g + 15) Mod 30; i := c Div 4; k := c Mod 4; l := (32 + 2 * e + 2 * i - h - k) Mod 7; m := (a + 11 * h + 22 * l) Div 451; n := (h + l - 7 * m + 114) Div 31; p := (h + l - 7 * m + 114) Mod 31 + 1; DD := p; MM := n; Result := EncodeDate(YYYY, MM, DD); End; Var EDate: TDateTime; Begin AddHoliday(1, 1, 'Neujahr'); AddHoliday(1, 5, 'Tag der Arbeit'); AddHoliday(3, 10, 'Tag der deutschen Einheit'); AddHoliday(25, 12, '1. Weihnachtsfeiertag'); AddHoliday(26, 12, '2. Weihnachtsfeiertag'); AddHoliday(1, 11, 'Allerheiligen'); EDate := GetEasterDate(Year); AddHoliday(EDate + 60, 'Fronleichnam'); AddHoliday(EDate - 2, 'Karfreitag'); AddHoliday(EDate + 1, 'Ostermontag'); AddHoliday(EDate + 39, 'Christi Himmelfahrt'); AddHoliday(EDate + 50, 'Pfingstmontag'); End;
end. |