Public Class cFeiertage
Private _Year As Integer
Private _Ostern As Date
'''
''' Initialisiert die Feiertags-Klasse für das aktuelle Jahr
'''
Public Sub New()
_Year = Now.Year
End Sub
'''
''' Initialisiert die Feiertags-Klasse für das angegebene Jahr
'''
Public Sub New(ByVal Year As Integer)
_Year = Year
End Sub
'''
''' Gibt das Datum für den Ostersonntag zurück.
'''
Public ReadOnly Property Ostersonntag() As Date
Get
If _Ostern.Ticks = 0 Then
' Datum des ersten Vollmondes nach Frühlingsanfang
Dim a As Integer = _Year Mod 19
Dim b As Integer = _Year Mod 4
Dim c As Integer = _Year Mod 7
Dim M As Integer = Val(((8 * Val(_Year / 100) + 13) / 25) - 2)
Dim s As Integer = Val(_Year / 100) - Val(_Year / 400) - 2
M = (15 + s - M) Mod 30
Dim N As Integer = (6 + s) Mod 7
Dim d As Integer = (M + 19 * a) Mod 30
If d = 29 Then
d = 28
ElseIf d = 28 Then
If (_Year Mod 19) > 10 Then d = 27
End If
Dim e As Integer = (2 * b + 4 * c + 6 * d + N) Mod 7
' Ostersonntag
_Ostern = New DateTime(_Year, 3, 21).AddDays(d + e + 1)
End If
Return _Ostern
End Get
End Property
'''
''' Gibt das Datum für den Ostermontag zurück.
'''
Public ReadOnly Property Ostermontag() As Date
Get
Return Ostersonntag.AddDays(1)
End Get
End Property
'''
''' Gibt das Datum für den Karfreitag zurück.
'''
Public ReadOnly Property Karfreitag() As Date
Get
Return Ostersonntag.AddDays(-2)
End Get
End Property
'''
''' Gibt das Datum für den Pfingstsonntag zurück.
'''
Public ReadOnly Property Pfingstsonntag() As Date
Get
Return Ostersonntag.AddDays(49)
End Get
End Property
'''
''' Gibt das Datum für den Pfingsmontag zurück.
'''
Public ReadOnly Property Pfingstmontag() As Date
Get
Return Ostersonntag.AddDays(50)
End Get
End Property
'''
''' Gibt das Datum für Christi-Himmelfahrt zurück.
'''
Public ReadOnly Property Himmelfahrt() As Date
Get
Return Ostersonntag.AddDays(39)
End Get
End Property
'''
''' Gibt das Datum für Fronleichnam zurück.
'''
Public ReadOnly Property Fronleichnam() As Date
Get
Return Ostersonntag.AddDays(60)
End Get
End Property
'''
''' Gibt das Datum für Aschermittwoch zurück.
'''
Public ReadOnly Property Aschermittwoch() As Date
Get
Return Ostersonntag.AddDays(-46)
End Get
End Property
Public Function isFeiertag(datum As Date) As Boolean
If datum = CDate("01.01." & _Year) Then Return True
If datum = CDate("06.01." & _Year) Then Return True
If datum = CDate("01.05." & _Year) Then Return True
If datum = CDate("15.08." & _Year) Then Return True
If datum = CDate("26.10." & _Year) Then Return True
If datum = CDate("01.11." & _Year) Then Return True
If datum = CDate("08.12." & _Year) Then Return True
If datum = CDate("25.12." & _Year) Then Return True
If datum = CDate("26.12." & _Year) Then Return True
If datum = Ostermontag Then Return True
If datum = Ostersonntag Then Return True
If datum = Himmelfahrt Then Return True
If datum = Pfingstmontag Then Return True
If datum = Pfingstsonntag Then Return True
If datum = Fronleichnam Then Return True
Return False
End Function
End Class