Variable für Feiertage

Ich hab dieses Skript seit einigen Tagen testweise am Laufen. Land Deutschland, Bundesland BW. Aber das Skript berechent die Feiertage nicht korrekt:

  • Heute habe ich durch Einschalten des Debug-Modus festgestellt, dass schon die Berechnung von Ostern nicht stimmt, als Osterdatum wird mir der 17.04.2017 ausgegeben, das ist aber der Ostermontag, nicht der Ostersonntag 2017!
  • Auch die daraus berechneten weiteren Feiertage stimmen nicht, sind alle um 1-2 Tage verschoben

Weiss jemand, was da falsch laufen könnte?

Hier noch ein kleines (und gelöstes) weiteres Problem: Ich habe auch die Änderung zur Behandlung der Schaltjahr-Ausnahme für das Jahr 2100 wie weiter oben in diesem Thread vorgeschlagen, im Skript umgesetzt. Damit habe ich aber einen sonderbaren Syntaxfehler bekommmen:
Unexpected symbol near > in line …

Das liegt wahrscheinlich an der Syntax der if-Auswertung dafür:
if ((zahl4 == 0) and (zahl100 <> 0)) or (zahl400 == 0) then – Ein Schaltjahr -> Feb. = 29 Tage

Diesen Fehler habe ich durch Einführung einiger boolescher Hilfsvariablen umgangen - mit folgenden Änderungen für die if-Abfrage kam diese Syntaxfehlermeldung dann nicht mehr:
zahl4 = Jahr % 4;
zahl100 = Jahr % 100;
zahl400 = Jahr % 400;

Bool1=(zahl4==0);
Bool2=not(zahl100==0);
Bool3=(zahl400==0);

if (Bool1 and Bool2) or Bool3 then – Ein Schaltjahr -> Feb. = 29 Tage

In Zeile 5 muss das ‘ungleich’ Zeichen ‘<>’ durch ‘~=’ ersetzt werden, dann klappt es.

Vielen Dank auch an das Forum für dieses Skript! Das baue ich gleich in meine Rolladensteuerung ein :slight_smile:

Grüße
Arno

hallo zusammen,

habe die Feiertags Lua in der HC2 eingeführt. Nur leider schaffe ich das nicht, dieses mit meiner Jalousien-Szene zu verbinden. Kann mir da jemand helfen?? Habe zwei elektrische Rolläden die von Mo-Fr um 7 Uhr hochgehen sollen und an den Feiertagen um 10 Uhr.

Wäre super und vielen Dank im Voraus

Hi,

wie sieht Deine Rollo-Szene derzeit aus?
Block oder LUA?

Die Feiertags-Var brauchst Du nur in Deine If-Bedingung (für den jeweiligen tag) mit aufnehmen.

VG Hoggle

Momentan Block, kann aber auch gern LUA sein.

Vielen Dank

Nun mit Anhang

Hoffe es klappt nun jetzt

Foto-Fibaro.JPG.jpeg

in der Bedingung hast Du zwei Zeitangaben.
Das läuft so nicht.

in Block solltest Du das trennen.
Wenn 7 Uhr und Feiertag == 0 DANN…

Wenn 10 Uhr UND Feiertag == 1 Dann…

Also zwei Szenen machen?? Oder ist das bei LUA einfacher, obwohl ich das gar nicht selbst hinbekomme

Um da rein zu kommen, erstelle Dir zwei Blockszenen dafür.

Ok danke Dir :slight_smile:

War bei Euch heute Feiertag?

@Mickey, hast Du Deine festgestellte Verschiebung gelöst?

Rundet die Formel nicht richtig?

Hallo,

da das Script zur Feiertagsberechnung nicht wirklich rund lief, habe ich mir das heute noch mal angeschaut und ein paar Änderungen gemacht. Die Routine zur Osterberechnung sowie die Schaltjahrberechnung ist komplett geändert worden. Teilweise hab ich eine bereits vorhandene Routine aus dem Internet (Quelle steht im Sourcecode) genommen und abgeändert.

--[[
%% autostart
%% properties
%% globals
--]]

-- ************************************************************************
-- FEIERTAGE-SCRIPT
-- ************************************************************************

-- Das Skript berechnet die eidg./kant. Feiertage im aktuellen Jahr und prüft,
-- ob heute oder morgen ein Feiertag ist und hinterlegt das Ergebnis in den
-- Systemvariablen "Feiertag_heute" und "Feiertag_morgen".

-- (c) Simon Betschmann (01-2015)
-- Version: 1.0
-- Basierend auf einer Idee von Peter Beck (01-2011)
-- Version: 1.1
-- Erweiterung für Deutschland und Bundeländer von Udo Haß
-- Version: 1.2
-- Routine zur Berechnung der Osterfeiertage und Schaltjahr vollständig ersetzt.
-- Quelle der Berechnung der Osterfeiertage teilweise von http://wiki.contextgarden.net/Calendar_script
-- Feiertage, welche auf Ostern basieren im Aray korrigiert
-- Änderungen von Udo Haß 

-- Es werden folgende Systemvariablen benötigt:
-- Feiertag_heute
-- Feiertag_morgen

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- EINSTELLUNGEN
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- Bitte nur in dieser Sektion Einstellungen vornehmen
local debuging = false -- TOGGLE DEBUGING (true|false)
local Land = "DE"  -- LAND angeben (DE, CH)
local Bundesland = "NW" -- Bundesland eingeben (BW,BY,BE,BB,HB,HH,HE,MV,NI,NW,RP,SL,SN,ST,SH,TH) -- Kürzel http://www.schnelle-online.info/Feiertage-Deutschland.html
local katholische_Gemeinde ="nein" -- spezielle Feiertage für katholische Gemeinden (München, Ingolstadt, Rosenheim) 
local Kanton = "" -- Kanton angeben für kantonale Feiertage (ZH, AG,...) -- leer lassen, um Funktion auszuschalten

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- DEBUG
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- Grundfunktion: Debug("red", "Nachrichtentext")
Debug = function(color, message)
  if (debuging) then
    fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
  end
end

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- FEIERTAGE BERECHNEN
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--- oTag berechnen Anfang ---

function FeiertageFunc()
  local Datum = os.date("%d.%m.") -- heutiges Datum (ohne Jahr)
  local zaehler= 1

-- OSTERDATUM BERECHNEN
  local Jahr = os.date("%Y") -- Das aktuelle Jahr ermitteln
  local oTag -- Das Tagesdatum vom oTag
  local oMonat -- Das Monatsdatum von oTag
  local oDatum -- Das komplette Datum vom oTag
  local mTage -- Variable für die interne Berechnung
  local LVar1 -- Variable für die interne Berechnung
  local LVar2 -- Variable für die interne Berechnung
  local LVar3 -- Variable für die interne Berechnung
  local zahl -- Variable für die interne Berechnung

-- Prüfen ob Schaltjahr
if (math.fmod(Jahr,4) == 0) then 
   if (math.fmod(Jahr,100) == 0) then 
      if (math.fmod(Jahr,400) == 0) then 
	 Schaltjahr = true
	 else Schaltjahr = false end
  else Schaltjahr = true end
else Schaltjahr = false
end

-- Berechne Ostersonntag, basiert auf Meeus/Jones/Butcher
local a = math.fmod(Jahr,19)
local b = math.floor(Jahr / 100)
local c = math.fmod(Jahr,100)
local d = math.floor(b / 4)
local e = math.fmod(b,4)
local f = math.floor((b + 8) / 25) 
local g = math.floor((b - f + 1) / 3)
local h = math.fmod((19 * a + b - d - g + 15),30)
local i = math.floor(c / 4)
local k = math.fmod(c,4)
local L = math.fmod((32 + 2 * e + 2 * i - h - k),7)
local m = math.floor((a + 11 * h + 22 * L) / 451)
local oMonat = math.floor((h + L - 7 * m + 114) / 31)
local oTag = math.fmod((h + L - 7 * m + 114),31) + 1

-- Das Ergebnis in Variable oDatum hinterlegen
  if (oTag < 10) then
    oDatum = "0" .. oTag .. "." .. oMonat .. "." .. Jahr;
  else
    oDatum = oTag .. "." .. oMonat .. "." .. Jahr;
  end

Debug("gray", "Osterdatum: ".. oDatum)
Debug("gray", "Datum: ".. Datum)

-- Ermitteln, wieviele Tage der Februar im aktuellen Jahr hat
zahl4 = Jahr % 4;
zahl100 = Jahr % 100;
zahl400 = Jahr % 400;
 
  if ((zahl4 == 0) and (zahl100 ~= 0)) or (zahl400 == 0)  then -- Ein Schaltjahr -> Feb. = 29 Tage
    mTage = {31,29,31,30,31,30,31,31,30,31,30,31}; -- Anzahl der Tage im Monat Jan.-Dez.
    Debug("gray", Jahr.. " ist ein Schaltjahr.")
  else
    mTage = {31,28,31,30,31,30,31,31,30,31,30,31}; -- Anzahl der Tage im Monat Jan.-Dez.
    Debug("gray", Jahr.. " ist kein Schaltjahr.")
  end    
  
-- Feiertage mit dem heutigen & morgigen Datum vergleichen und Ergebnis
-- in den Variablen "Feiertag_heute" bzw. "Feiertag_morgen" speichern
  while zaehler< 3 do
    local Feiertag = 0

    if (Land == "DE") then -- Bundeseinheitliche Feiertage in Deutschland
      if (Datum == "01.01.") then Feiertag = 1 end -- Neujahr
      if (Datum == "01.05.") then Feiertag = 1 end -- Tag der Arbeit
      if (Datum == "03.10.") then Feiertag = 1 end -- Tag der Deutschen Einheit
      if (Datum == "31.10.") and (Jahr == "2017") then Feiertag = 1 end -- Reformationstag (nur 2017 Bundeseinheitlich!)
      if (Datum == "25.12.") then Feiertag = 1 end -- 1. Weihnachtstag
      if (Datum == "26.12.") then Feiertag = 1 end -- 2. Weihnachtstag
      
      if Bundesland =="BW" then  -- spezifische Feiertage für Baden-Würtenberg
        if (Datum == "06.01.") then Feiertag = 1 end -- Heilige Drei Könige
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam
        if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
            
      if Bundesland =="BY" then  -- spezifische Feiertage für Bayern
        if (Datum == "06.01.") then Feiertag = 1 end -- Heilige Drei Könige
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam
        if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
        if (katholische_Gemeinde == "ja") then
          if (Datum == "15.08.") then Feiertag = 1 end -- Mariä Himmelfahrt
        end
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end
      
      if Bundesland =="BE" then  -- spezifische Feiertage für Berlin
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
      
      if Bundesland =="BB" then  -- spezifische Feiertage für Brandenburg
        if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
        -- Aray mit Differenztagen zum oTag:
        -- oTag, Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstsonntag,Pfingstmontag
        feiertage = {-2,0,1,39,48,49}
      end       
            
      if Bundesland =="HB" then  -- spezifische Feiertage für Bremen
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
      
      if Bundesland =="HH" then  -- spezifische Feiertage für Hamburg
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
      
      if Bundesland =="HE" then  -- spezifische Feiertage für Hessen
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam

        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
      
      if Bundesland =="MV" then  -- spezifische Feiertage für Mecklenburg-Vorpommern
        if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag

        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
      
      if Bundesland =="NI" then  -- spezifische Feiertage für Niedersachsen
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
            
      if Bundesland =="NW" then  -- spezifische Feiertage für NRW
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam
        if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
      
      if Bundesland =="RP" then  -- spezifische Feiertage für Rheinland-Pfalz
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam
        if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
    
      if Bundesland =="SL" then  -- spezifische Feiertage für Saarland
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam
        if (Datum == "15.08.") then Feiertag = 1 end -- Mariä Himmelfahrt
        if (Datum == "01.11.") then Feiertag = 1 end -- Allerheiligen
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
    
      if Bundesland =="SN" then  -- spezifische Feiertage für Sachsen
        if (Datum == "26.05.") then Feiertag = 1 end -- Fronleichnam
        if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
        if (Datum == "16.11.") then Feiertag = 1 end -- Buß- und Bettag
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
    
      if Bundesland =="SL" then  -- spezifische Feiertage für Sachsen-Anhalt
        if (Datum == "06.01.") then Feiertag = 1 end -- Heiligen-Drei-Könige
        if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
    
      if Bundesland =="SH" then  -- spezifische Feiertage für Schleswig-Holstein
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
    
      if Bundesland =="TH" then  -- spezifische Feiertage für Thüringen
        if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 
    end

    if (Land == "CH") then -- FESTE FEIERTAGE IN DER GANZEN SCHWEIZ
      if (Datum == "01.01.") then Feiertag = 1 end -- Neujahr
      if (Datum == "01.08.") then Feiertag = 1 end -- Nationalfeiertag
      if (Datum == "25.12.") then Feiertag = 1 end -- Weihnachten
      if (Datum == "26.12.") then Feiertag = 1 end -- Stephanstag
-- FEIERTAGE IM KANTON ZÜRICH
      if (Kanton == "ZH") then
        if (Datum == "01.05.") then Feiertag = 1 end -- Tag der Arbeit
      end
-- FEIERTAGE IM KANTON AARGAU
      if (Kanton == "AG") then
        if (Datum == "02.01.") then Feiertag = 1 end -- Berchtoldstag
      end

-- VARIABLE FEIERTAG IN DER GANZEN SCHWEIZ
-- Aray mit Differenztagen zum oTag:
-- Ostermontag, Karfreitag, Auffahrt, Pfingstmontag
      feiertage = {-2,1,39,49}
    end

  
-- VARIABLE FEIERTAGE: DATEN BERECHNEN
    oTage = mTage[tonumber(oMonat)] -- Anzahl Tage im Ostermonat
    Debug("grey", "Anzahl Tage im Ostermonat: "..oTage)

    local fDatum; -- Feiertagsdatum
    local fDiff; -- Anzahl der Tage vom oTag entfernt
    local Schleife; -- Für die Berechnungen in der while-Schleife notwendig    
    
    for x in next, feiertage do
      Debug("red", "Feiertag: "..feiertage[x])

      fDiff = feiertage[x]
      Schleife = true;

      zahl = oTag + fDiff; -- Differenztage zum Referenztag hinzurechnen
      Debug("grey", "Zahl: "..zahl..", oTag: "..oTag..", fDiff: "..fDiff..", index: "..x)

      if (fDiff > 0) then
        if (zahl > oTage) then
          zahl = zahl - oTage; -- Sind wir ausserhalb des Referenzmonats?
          Debug("grey", "Ausserhalb des Referenzmonats > Schleife durchlaufen.")
        else -- Nein => Berechnungschleife nicht durchlaufen.
          Schleife = false;
          LVar2 = oMonat;
          Debug("grey", "Innerhalb des Referenzmonats > Schleife nicht durchlaufen.")
        end
      else
        if (zahl > 0) then -- Wenn innerhalb des Referenzmonats => Berechnungsschleife nicht durchlaufen.
          Schleife = false;
          LVar2 = oMonat;
          Debug("grey", "Innerhalb des Referenzmonats > Schleife nicht durchlaufen.")
        else
          Debug("grey", "Ausserhalb des Referenzmonats > Schleife durchlaufen.")
        end
      end

      LVar1 = 0;

-- Schleife 'Monatsberechnung', falls nicht im gleichen Monat wie Ostern
      if (fDiff > 0) then
      while (Schleife) do
        LVar1 = LVar1 + 1.00;
        LVar2 = oMonat + LVar1;
        zahl = zahl - mTage[tonumber(oMonat)];
        if (zahl <= 0) then -- Aktueller Monat gefunden
          Schleife = false;
          zahl = zahl + mTage[tonumber(oMonat)] -- Wieder addieren, um den Tag zu berechnen
        end
      end
    else
      if (fDiff < 0) then
        while (Schleife) do
          LVar1 = LVar1 + 1.00;
          LVar2 = oMonat - LVar1;
          zahl = zahl + mTage[tonumber(oMonat)]
          if (zahl > 0) then -- Aktueller Monat gefunden
            Schleife = false;
          end
        end
      end
    end

-- Datum des Feiertags berechnen
      Debug("grey", "Datum des Feiertags berechnen...")
      if (zahl < 10 and tonumber(LVar2) < 10) then
    fDatum = "0" .. zahl .. ".0"..tonumber(LVar2).. ".";
  elseif (zahl < 10) then
    fDatum = "0" .. zahl .. "."..tonumber(LVar2).. ".";
  elseif (tonumber(LVar2) < 10) then
    fDatum = zahl .. ".0"..tonumber(LVar2).. ".";
  else
    fDatum = zahl .. "."..tonumber(LVar2).. ".";
  end

      Debug("white", "Feiertag: "..fDatum)

-- Prüfen, ob Datum heute/morgen mit Feiertag übereinstimmt
      if (Datum == fDatum) then
    Feiertag = 1
    fibaro:debug("Feiertag ("..fDatum..") gefunden.")
  end
    end

-- VARIABLEN SETZTEN
    if zaehler== 1 then
-- 1. Durchgang: Datum heute mit den Feiertagen prüfen
      Debug("grey", "1. Durchgang: Datum heute="..Datum..", Feiertag="..Feiertag)
      fibaro:setGlobal("Feiertag_heute", Feiertag)
      zaehler= 2
      Datum = os.date("%d.%m.", os.time()+24*60*60) -- Datum auf morgen setzen
    else
-- 1. Durchgang: Datum morgen mit den Feiertagen prüfen
      Debug("grey", "2. Durchgang: Datum morgen="..Datum..", Feiertag="..Feiertag)
      fibaro:setGlobal("Feiertag_morgen", Feiertag)
      zaehler= 3
    end

  end

-- ERGEBNIS AUSGEBEN
  if fibaro:getGlobal("Feiertag_heute") == '0' then
    fibaro:debug("Heute ist kein Feiertag.")
  else
    fibaro:debug("Heute ist ein Feiertag. Variable gesetzt!")
  end
  if fibaro:getGlobal("Feiertag_morgen") == '0' then
    fibaro:debug("Morgen ist kein Feiertag.")
  else
    fibaro:debug("Morgen ist ein Feiertag. Variable gesetzt!")
  end

end

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- SZENE JEDEN TAG UM 00:01 AUSFÜHREN
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
local sourceTrigger = fibaro:getSourceTrigger();

function tempFunc()
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or    currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:01") )) then
    FeiertageFunc()
  end
  setTimeout(tempFunc, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
  tempFunc()
else
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if (startSource["type"] == "other") then
    FeiertageFunc()
  end
end

Super!
Danke Dir.
Die Osterformel hatte ich nicht nachvollzogen.

ich sehe gerade das die Routine für das Schaltjahr [Zeile 73-81] überflüssig sind. Eigentlich wollte ich die auch überarbeiten.

Meinst du, das kann ganz raus?

ja, kann auf jedenfall raus. Mit der Variable “Schaltjahr” passiert ja danach im Script nichts mehr.

Hallo zusammen,

tolles Script! Danke! Eine Idee habe ich noch, wie sieht es mit den Schulferien aus? Das wäre für Lehrer und Eltern mit Kindern sicherlich klasse, wenn man in den Ferien die Rollläden, Heizung etc etwas später fahren könnte…

Meine Idee wäre, die händisch beim Bundesland jedes Jahr einfach neu einzutragen:

  if Bundesland =="ST" then  -- spezifische Feiertage für Sachsen-Anhalt
        if (Datum == "06.01.") then Feiertag = 1 end -- Heiligen-Drei-Könige
        if (Datum == "31.10.") then Feiertag = 1 end -- Reformationstag
        -- Aray mit Differenztagen zum oTag:
        -- Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
        feiertage = {-2,1,39,49}
      end 

Also ab Zeile zwei die Ferientage zu definieren. Kann man hier auch einen Zeitraum festlegen? Damit man für Blöcke wie die Sommerferien nicht 42 Tage einzeln eingeben muss?

Hallo Eldar, das sollte sich eigentlich machen lassen. Ich denke der Urlaubsanfang und Urlaubende muss in einer Dezimalzahl umgerechnet werden. Danach könnte das mit einer IF Abfrage umgesetzt werden. Mir ist unter Lua kein Befehl bekannt, wie es sonst umgesetzt werden kann. Ggfs. hat ja jemand eine Idee.

Gruß, Valle