Mittwoch, 28. Mai 2008

Datumsspielereien (Teil 3) / Date gadgets (Part 3)

Im dritten Posting geht es um diejenigen Feiertage, die in direkter Beziehung zu Heiligabend oder vielmehr dem 1. Weihnachtsfeiertag stehen.

Im Einzelnen handelt es sich hier um den Volkstrauertag, Buss- und Bettag, Totensonntag sowie den 1. - 4. Advent.

Der folgende Code greift auf die im Teil 1 beschriebene Funktion SetYear() zurück.

Ähnlich wie beim Osterfest und den daran gekoppelten Feiertagen verhält es sich mit den an dieser Stelle aufgeführten Terminen. Basis ist der letzte Sonntag vor dem 1. Weihnachtsfeiertag.

* korrigierte Version gemäss wOOdy's Vorschlag            
* CTOD() gegen die bessere DATE()-Funktion auszutauschen
FUNCTION GetVolkstrauertag as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    ld25 = DATE(Jahr,12,25)
    RETURN ld25 - DOW(ld25,2) - 35
ENDFUNC

FUNCTION GetBussUndBettag as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    RETURN GetTotensonntag(Jahr) - 4
ENDFUNC

FUNCTION GetTotensonntag as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    ld25 = DATE(Jahr,12,25)
    RETURN ld25 - DOW(ld25,2) - 28
ENDFUNC

FUNCTION GetErsterAdvent as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    ld25 = DATE(Jahr,12,25)
    RETURN ld25 - DOW(ld25,2) - 21
ENDFUNC

FUNCTION GetZweiterAdvent as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    ld25 = DATE(Jahr,12,25)
    RETURN ld25 - DOW(ld25,2) - 14
ENDFUNC

FUNCTION GetDritterAdvent as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    ld25 = DATE(Jahr,12,25)
    RETURN ld25 - DOW(ld25,2) - 7
ENDFUNC

FUNCTION GetVierterAdvent as Date
LPARAMETERS Jahr as Integer
    Jahr = SetYear(Jahr)
    ld25 = DATE(Jahr,12,25)
    RETURN ld25 - DOW(ld25,2)
ENDFUNC

Kommentare:

  1. Auch hier gilt: Ersetzen des CTOD() Aufrufs durch die DATE() Funktion, die direkt numerische Parameter verwenden kann....

    AntwortenLöschen
  2. Hi wOOdy,
    Danke für die Info. Es ist doch immer gut, wenn mal jemand anderes auf den eigenen Code schaut. die Parameter 2 und 3 der DATE()-Funktion habe ich irgendwie aus meinem Gedächtnis verdrängt gehabt... Asche auf mein Haupt ;-)

    -Tom

    AntwortenLöschen