PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Berechnung der Feiertage in Bascom



Tuffig
01.11.2006, 11:06
Hallo,

hat mal jemand unter Bascom die Feiertage berechnet ... :-k
(Gauss-Fomel für Ostersonntag + X für die nächsten Feiertage)
und veröffentllicht den Code? O:)

Danke vorab

mx3
01.11.2006, 14:59
Hi!

Habs zwar nicht in Bascom ihr aber in Visual Basic.
http://www.microsoft.com/germany/msdn/library/visualtools/vb6/BerechnungBeweglicherFeiertageUnterVisualBasic.msp x?mfr=true

Müßte man auf Bascom umschreiben(pro Code-Zeile nur eine Berechnung !)

gruß,MX3

for_ro
01.11.2006, 15:18
In Excel habe ich das so:
tag = ((234 - 11 * (current_year Mod 19)) Mod 30) + 21
ostern = DateSerial(current_year, 3, 1) + tag + (tag > 48) + 6 - ((current_year + current_year \ 4 + tag + (tag > 48) + 1) Mod 7)

Ungetestet übersetzt wäre das etwa so:

config date= DMY , Separator = .

tag=_year mod 19
tag=tag*11
tag=234-tag
tag=tag mod 30
tag=tag+21
if tag>48 then tag=tag+1
märz01="01.03."+str(_year)
ostern=_year\4
ostern=ostern+year
ostern=ostern+tag
ostern=ostern+1
ostern=ostern mod 7
ostern=sysday(märz01)-ostern
ostern=ostern+tag
ostern=ostern+6

Rosenmontag=ostern-48
Karfreitag=ostern-2
Ostersonntag=ostern
Ostermontag=ostern+1
Christi_Himmelfahrt=ostern + 39
Pfingstsonntag=ostern + 49
Pfingstsonntag=ostern + 50
Fronleichnam=ostern + 60


Gruß

Rolf

for_ro
01.11.2006, 15:29
Versteht jemand, wo der diese beiden smilies hergenommen hat?
Da soll eigentlich eine 8 und eine) stehen.

oe9vfj
14.11.2006, 14:37
Ich habe die obige Formel für das 21. Jahrhundert vereinfacht und in eine Library-Funktion umgesetzt.

Die Funktion Eastern ist gültig von 2000 bis 2099 und muss mit einem BYTE-Wert von 0 bis 99 (Jahreszahl) aufgerufen werden.

Mit Einbindung der Library Eastern.lib/lbx kann die Funktion Eastern benutzt werden, welche eine SYSDAY-Wert zurückgibt. Dies ist ein nummerischer Wert vom Typ WORD, welcher die Anzahl der Tage seit dem 1.1.2000 angibt.

Mit diesem Wert kann in BASCOM-AVR mit Tagen gerechnet werden.

Mit der Funktion DATE kann dann dieser SYSDAY-Wert in einen Datums-String oder auch in diskrete Werte für Tag, Monat und Jahr umgewandelt werden.

Dim wOsterSonntag as Word
Dim bJahr as Byte

bJahr = 6
wOsterSonntag = Eastern (bJahr)
Print Date(wOsterSonntag)
Mit diesem Code-Beispiel wird 16.04.06 ausgegeben.

Aus dem angehängten ZIP-File müssen die Dateien Eastern.lib und Eastern.lbx in den LIB-Pfad kopiert werden. Ein ausführliches Beispiel, wie man diese Funktion Eastern benutzt ist im File Ostern.bas enthalten.

Tuffig
18.11.2006, 17:52
Hey, Klasse - Funktioniert prima!

Vielen Dank dafür!