Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Friese am 04.08.03 - 14:02:46

Titel: Feiertage errechnen
Beitrag von: Friese am 04.08.03 - 14:02:46
Hallo!

Hat (zufällig) jemend einen Script, mit dem ich die Feiertage eines Jahres errechnen kann? Sprich, daß ich am Anfang des Jahres einen Button drücke und mir alle Feiertage ausgegeben werden.

Über Antworten wäre ich sehr dankbar.

mfg
Friese
Titel: Re:Feiertage errechnen
Beitrag von: klaussal am 04.08.03 - 14:11:40
... geh mal über die suche, da gab's mal was
Titel: Re:Feiertage errechnen
Beitrag von: eknori (retired) am 04.08.03 - 14:26:02
für Ostern gibt es da eine Formel von Gauss

gilt für die Jahre 1900 bis 2099:

Wenn man den den Divisionsrest aus Jahreszahl dividiert durch 19 nimmt und diese Zahl mit 19 mutipliziert und die Konstante 24 addiert und dann das Ganze durch 30 dividiert, erhaelt man eine Zahl, die man sich merken sollte. Nun braucht man nur noch die Jahreszahl durch 4 teilen, den Rest verdoppeln, dann das 4-fache des Divisionsrestes von Jahreszahl dividiert durch 7 hinzuaddieren und das 6-fache der oben gemerkten Zahl addieren, die Konstante 5 dazuaddieren und das Ganze durch 7 teilen. Diese Zahl plus der oben gemerkten Zahl ( :o  etwa vergessen?) minus 9 ergibt beinahe den Ostersonntag - aber auch nur, wenn dieser auf den Monat April faellt. Kommt allerdings der 26. heraus, so wird daraus der 19. April. Und ehe man den 25. errechnet hat, sollte man pruefen ob die erste gemerkte Zahl ( :o :o :o na - immer noch im Kopf?) nicht etwa 28 ist und der Divisionsrest der Jahreszahl durch 19 groesser als 10 ist - dann ist naemlich am 18. April Ostern. - Geschafft!!

easy, oder ??  

;D ;D ;D
Titel: Re:Feiertage errechnen
Beitrag von: Axel_Janssen am 04.08.03 - 14:28:26
Anton Tauscher (username ata) hat auf seiner Webseite eine gute Script-Bibliothek, wenn mich nicht alles täuscht.
Dann kannst du dir die von eknori angesprochenen grundlegenden Mathe-Operationen sparen.
Titel: Re:Feiertage errechnen
Beitrag von: Glombi am 04.08.03 - 18:34:21
Hi,hier eine VB formel
die lässt sich aber leicht in LS umsetzen:

Ausgehend vom Ostersonntag kann man die Feiertage berechnen:
Function Ostern(Yr As Integer) As Date
   Dim D As Integer
   D = (((255 - 11 * (Yr Mod 19)) - 21) Mod 30) + 21
   Ostern = DateSerial(Yr, 3, 1) + D + (D > 48) + 6 - _
    ((Yr + Yr \ 4 + D + (D > 48) + 1) Mod 7)
End Function

Weitere Feiertage:
Neujahr = DateSerial(Year(Now), 1, 1)
Maifeiertag = DateSerial(Year(Now), 5, 1)
Karfreitag = Ostern(Year(Now)) - 2
Ostermontag = Ostern(Year(Now)) + 1
Himmelfahrt = Ostern(Year(Now)) + 39
Pfingstsonntag = Ostern(Year(Now)) + 49
Pfingstmontag = Ostern(Year(Now)) + 50
Fronleichnam = Ostern(Year(Now)) + 60
TagDeutscheEinheit = DateSerial(Year(Now), 10, 3)


Quelle:
http://www.schmittis-page.de/index.html?/excel/vba/t62.htm

Andreas
Titel: Re:Feiertage errechnen
Beitrag von: eknori (retired) am 04.08.03 - 18:41:52
wenn du jetzt noch die Funktionsweise von DateSerial posten könntest, waäre es schon fast perfect  :D
Titel: Re:Feiertage errechnen
Beitrag von: Glombi am 04.08.03 - 18:58:44
Hi,

hier was zu der Funktion:
http://www-mmt.inf.tu-dresden.de/Docs/iis3/ASP_Docs/ref/vbs/vbscript/69.htm

Hab noch was direkt in LS gefunden - hier die wichtigste Passage:
(c) by Raimund Mann, 1997

Sei Y die 2-stellige Jahreszahl:

 If Y < 51 Then
'          Y = Y+2000
'     Else
'          Y=Y+1900
'     End If
'Berechne den Ostersonntag für das angegebene Jahr
' nach der Methode von Butcher
   a=Int(Y Mod 19)
   b= Int(Y/100)
   c=Int(Y Mod 100)
   d=Int(b/4)
   e=Int(b Mod 4)
   f=Int((b+8)/25)
   g=Int((b-f+1)/3)
   h=Int((19*a+b-d-g+15) Mod 30)
   i=Int(c/4)
   k=Int(c Mod 4)
   l=Int((32+2*e+2*i-h-k) Mod 7)
   m=Int((a+11*h+22*l)/451)
   EasterMonth =Int((h+l-7*m+114)/31) ' [3=March, 4=April]
   p=Int((h+l-7*m+114) Mod 31)
   EasterDay=p+1     '(date in Easter Month)
   EasterDate = Cstr(EasterDay) + "." + Cstr(EasterMonth) + "."
   
   
'Basierend auf dem Ostersonntag berechne alle anderen Feiertage
   
'Die beweglichen Feiertage vor Ostern
 '-48 Rosenmontag    
   FTListe("Rosenmontag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay-48)),6)
'-47 Faschingsdienstag
   FTListe("Faschingsdienstag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay-47)),6)
'-46 Aschermittwoch    
   FTListe("Aschermittwoch") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay-46)),6)
' -3  Gründonnerstag
   FTListe("Gründonnerstag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay-3)),6)
' -2  Karfreitag
   FTListe("Karfreitag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay-2)),6)
   
'Die beweglichen Feiertage nach Ostern:      
' 0 OsterSonntag    
   FTListe("Ostersonntag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay)),6)
'1  Ostermontag          
   FTListe("Ostermontag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay+1)),6)
'39  Christi Himmelfahrt (Donnerstag)    
   FTListe("Christi Himmelfahrt") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay+39)),6)
'49  Pfingstsonntag    
   FTListe("Pfingstsonntag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay+49)),6)
'50  Pfingstmontag    
   FTListe("Pfingstmontag") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay+50)),6)
'60  Fronleichnam (Donnerstag; in BW, BAY, HES, NRW, RPF, SAL, THÜ)    
   FTListe("Fronleichnam") = Left$(Cstr(Datenumber(Y,EasterMonth,EasterDay+60)),6)
   
'Buß- und Bettag ist der 3 Mittwoch im November
     'mit welchem Wochentag beginnt der November
   woTag = Weekday(Datenumber(Y,11,1))
     'Buß- und Bettag ist dann
   If woTag = 4 Then
      FTListe("Buß- und Bettag") = Left$(Cstr(Datenumber(Y,11,15)),6)    
   Elseif woTag > 4 Then
      FTListe("Buß- und Bettag") = Left$(Cstr(Datenumber(Y,11,15+(7-(woTag-4)))),6)              
   Elseif woTag < 4 Then    
      FTListe("Buß- und Bettag") = Left$(Cstr(Datenumber(Y,11,15+(4-woTag))),6)              
   End If

Titel: Re:Feiertage errechnen
Beitrag von: ata am 04.08.03 - 19:07:23
... auf meiner Homepage habe ich eine kleine Demo unter

http://www.anton-tauscher.de/download/DateHandling.nsf (http://www.anton-tauscher.de/download/DateHandling.nsf)
http://www.anton-tauscher.de/download/DateHandling.zip (http://www.anton-tauscher.de/download/DateHandling.zip)

... demnächst werde ich eine internationale Variante ins Netz stellen - es gab sehr viel Anfragen aus dem Ausland...


ata