vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Datum/Zeit und Timer · Datums- und Zeit-Funktionen   |   VB-Versionen: VB2005, VB200824.07.09
Kirchliche Feiertage berechnen

Eine Klasse, mit der sich die kirchlichen Feiertage, wie bspw. Ostersonntag, Christi Himmelfahrt usw. für beliebige Jahre ermitteln lassen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  10.505 
www.tools4vb.deSystem:  Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Wissen Sie, wie man ermitteln kann, wann im Jahr xxxx Ostersonntag oder Christi Himmelfahrt ist? Nein? Dann schauen Sie sich einmal nachfolgende Feiertags-Klasse an.

Mit Hilfe dieser Klasse lassen sich folgende Termine berechnen:

  • Aschermittwoch
  • Karfreitag
  • Ostersonntag
  • Ostermontag Himmelfahrt
  • Pfingstsonntag
  • Pfingstmontag
  • Fronleichnam

Hierbei muss man eigentlich nur wissen, wie man das Datum für den Ostersonntag ermittelt. Alle anderen Daten lassen sich dann anhand des Ostersonntages berechnen.

Ostern ist stets am ersten Sonntag nach dem ersten Vollmond des Frühlingsanfangs (21.03).

Public Class Feiertage
  Private _Year As Integer
  Private _Ostern As Date
  ''' <summary>
  ''' Initialisiert die Feiertags-Klasse für das aktuelle Jahr
  ''' </summary>
  Public Sub New()
    _Year = Now.Year
  End Sub
  ''' <summary>
  ''' Initialisiert die Feiertags-Klasse für das angegebene Jahr
  ''' </summary>
  Public Sub New(ByVal Year As Integer)
    _Year = Year
  End Sub
  ''' <summary>
  ''' Gibt das Datum für den Ostersonntag zurück.
  ''' </summary>
  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
  ''' <summary>
  ''' Gibt das Datum für den Ostermontag zurück.
  ''' </summary>
  Public ReadOnly Property Ostermontag() As Date
    Get
      Return Ostersonntag.AddDays(1)
    End Get
  End Property
  ''' <summary>
  ''' Gibt das Datum für den Karfreitag zurück.
  ''' </summary>
  Public ReadOnly Property Karfreitag() As Date
    Get
      Return Ostersonntag.AddDays(-2)
    End Get
  End Property
  ''' <summary>
  ''' Gibt das Datum für den Pfingstsonntag zurück.
  ''' </summary>
  Public ReadOnly Property Pfingstsonntag() As Date
    Get
      Return Ostersonntag.AddDays(49)
    End Get
  End Property
  ''' <summary>
  ''' Gibt das Datum für den Pfingsmontag zurück.
  ''' </summary>
  Public ReadOnly Property Pfingstmontag() As Date
    Get
      Return Ostersonntag.AddDays(50)
    End Get
  End Property
  ''' <summary>
  ''' Gibt das Datum für Christi-Himmelfahrt zurück.
  ''' </summary>
  Public ReadOnly Property Himmelfahrt() As Date
    Get
      Return Ostersonntag.AddDays(39)
    End Get
  End Property
  ''' <summary>
  ''' Gibt das Datum für Fronleichnam zurück.
  ''' </summary>
  Public ReadOnly Property Fronleichnam() As Date
    Get
      Return Ostersonntag.AddDays(60)
    End Get
  End Property
  ''' <summary>
  ''' Gibt das Datum für Aschermittwoch zurück.
  ''' </summary>
  Public ReadOnly Property Aschermittwoch() As Date
    Get
      Return Ostersonntag.AddDays(-46)
    End Get
  End Property
End Class

Aufrufbeispiel:

' Feiertage für das Jahr 2010
Dim Feiertage As New Feiertage(2010)
ListBox1.Items.Add("Ostersonntag: " & Feiertage.Ostersonntag)
ListBox1.Items.Add("Ostersonntag: " & Feiertage.Himmelfahrt)

Dieser Tipp wurde bereits 10.505 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel