Autor Thema: Feiertage errechnen  (Gelesen 2397 mal)

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Feiertage errechnen
« 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

klaussal

  • Gast
Re:Feiertage errechnen
« Antwort #1 am: 04.08.03 - 14:11:40 »
... geh mal über die suche, da gab's mal was

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Feiertage errechnen
« Antwort #2 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
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:Feiertage errechnen
« Antwort #3 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.
« Letzte Änderung: 04.08.03 - 14:32:14 von Axel_Janssen »
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Glombi

  • Gast
Re:Feiertage errechnen
« Antwort #4 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

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Feiertage errechnen
« Antwort #5 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
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Glombi

  • Gast
Re:Feiertage errechnen
« Antwort #6 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

« Letzte Änderung: 04.08.03 - 18:59:39 von Glombi »

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Feiertage errechnen
« Antwort #7 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.zip

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


ata
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz