Code: Alles auswählen
boolean Rosenmontag = 0;
boolean Silvester = 1;
boolean Heiligabend = 1;
string land = "DE";
string bland = "BW";
integer Jahr = system.Date("%Y").ToInteger();
integer oTag;
integer oMonat;
string oDatum;
integer LVar1;
integer LVar2;
integer LVar3;
integer zahl;
LVar1 = ((19 * (Jahr % 19)) + (15 + (((3 * (Jahr / 100)) + 3) / 4) - (((8 * (Jahr / 100)) + 13) / 25))) % 30;
LVar2 = (LVar1 / 29) + (((LVar1 / 28) - (LVar1 / 29)) * ((Jahr % 19) / 11));
LVar3 = 7 - (((21 + LVar1 - LVar2) - (7 - ((Jahr + (Jahr / 4) + (2 - (((3 * (Jahr / 100)) + 3) / 4))) % 7))) % 7);
oTag = (21 + LVar1 - LVar2) + LVar3;
if (oTag > 31) {
oMonat = 4;
oTag = oTag - 31;
} else { oMonat = 3; }
if (oTag < 10) {
oDatum = "0" # oTag.ToString() # "." # "0" # oMonat.ToString() # "." # Jahr.ToString();
} else {
oDatum = oTag.ToString() # "." # "0" # oMonat.ToString() # "." # Jahr.ToString();
}
if ((Jahr % 400) == 0) {zahl=0;} else {if ((Jahr % 100) == 0) {zahl = 1;} else {zahl = Jahr % 4;}}
if (zahl == 0) {
string mTage = "31,29,31,30,31,30,31,31,30,31,30,31";
} else {
string mTage = "31,28,31,30,31,30,31,31,30,31,30,31";
}
string sDatum = system.Date("%d.%m.");
integer Durchlauf = 0;
while (Durchlauf < 2)
{
boolean Feiertag = 0;
if (sDatum == "01.01.") { Feiertag = 1; }
if (sDatum == "01.05.") { Feiertag = 1; }
if (sDatum == "25.12.") { Feiertag = 1; }
if (sDatum == "26.12.") { Feiertag = 1; }
if (land == "DE") {
if (sDatum == "03.10.") { Feiertag = 1; }
}
if (land == "AT") {
if (sDatum == "26.10.") { Feiertag = 1; }
if (sDatum == "08.12.") { Feiertag = 1; }
}
if ((Heiligabend) && (sDatum == "24.12.")) { Feiertag = 1; }
if ((Silvester) && (sDatum == "31.12.")) { Feiertag = 1; }
if ((bland == "BW") || (bland == "BY") || (bland == "ST") || (land == "AT")) {
if (sDatum == "06.01.") { Feiertag = 1; }
}
if ((bland == "BB") || (bland == "MV") || (bland == "SA") || (bland == "ST") || (bland == "TH") || (bland == "SN")) {
if (sDatum == "31.10.") { Feiertag = 1; }
}
if ((bland == "BW") || (bland == "BY") || (bland == "NW") || (bland == "RP") || (bland == "SL") || (land == "AT")) {
if (sDatum == "01.11.") { Feiertag = 1; }
}
if ((bland == "BY") || (bland == "SL") || (land == "AT")) {
if (sDatum == "15.08.") { Feiertag = 1; }
}
string feiertage = "";
if (land == "DE") {
feiertage = "0,1,-2,39,50";
}
if (land == "AT") {
feiertage = "0,1,39,50";
}
if ((bland == "BW") || (bland == "BY") || (bland == "HE") || (bland == "NW") || (bland == "RP") || (bland == "SL") || (bland == "SA") || (bland == "TH") || (land == "AT")) {
feiertage = feiertage # ",60";
}
if (Rosenmontag) {
feiertage = feiertage # ",-48";
}
zahl = (3 * oMonat) - 3;
integer oTage = mTage.Substr(zahl, 2).ToInteger();
string index;
foreach(index, feiertage.Split(",")) {
fDiff = index.ToInteger();
Schleife = 1;
zahl = oTag + fDiff;
if (fDiff > 0) {
if (zahl > oTage) {
zahl = zahl - oTage;
} else {
Schleife = 0;
LVar2 = oMonat;
}
} else {
if (zahl > 0) {
Schleife = 0;
LVar2 = oMonat;
}
}
LVar1 = 0;
if (fDiff > 0) {
while (Schleife) {
LVar1 = LVar1 + 1.00;
LVar2 = oMonat + LVar1;
LVar3 = (3 * LVar2) - 3;
zahl = zahl - mTage.Substr(LVar3, 2).ToInteger();
if (zahl <= 0) {
Schleife = 0;
zahl = zahl + mTage.Substr(LVar3, 2).ToInteger();
}
}
} else {
if (fDiff < 0) {
while (Schleife) {
LVar1 = LVar1 + 1.00;
LVar2 = oMonat - LVar1;
LVar3 = (3 * LVar2) - 3;
zahl = zahl + mTage.Substr(LVar3, 2).ToInteger();
if (zahl > 0) {
Schleife = 0;
}
}
}
}
if (zahl < 10) {
fDatum = "0" # zahl.ToString() # ".";
} else {
fDatum = zahl.ToString() # ".";
}
if (LVar2 < 10) {
fDatum = fDatum # "0" # LVar2.ToString() # ".";
} else {
fDatum = fDatum # LVar2.ToString() # ".";
}
if (sDatum == fDatum) { Feiertag = 1; }
}
if (bland == "SN") {
fDiff = 32;
LVar1 = (Jahr.ToString()#"-12-24 18:00:00").ToTime().Format("%w").ToInteger();
zahl = 30 - (fDiff + LVar1 - 24);
fDatum = zahl.ToString() # ".11.";
if (sDatum == fDatum) { Feiertag = 1; }
}
if (Durchlauf == 0) {
dom.GetObject('Feiertag_heute').State(Feiertag);
Durchlauf = 1;
sDatum = (system.Date("%F").ToTime().ToInteger() + 86400).ToTime().Format("%d.%m.");
} else {
dom.GetObject('Feiertag_morgen').State(Feiertag);
Durchlauf = 2;
}
}
Wolfgang