0

Stundenplanung auf x-Stunden pro Tag?

Ich hab ein Startdatum/-zeit und eine Vorgabezeit (Zeitdauer) möchte aber zur Planung, das nur, in diesem Fall 8 Std pro Tag gerechnet werden. Irgendwas läuft jedoch falsch bei meinem Code; oder gibt es eine Möglichkeit das anders zu steuern?

- Arbeitsbeginn (Datums-/Zeitfeld)

- Vorgabezeit (Zeitdauer)

- Funktionsfeld:

let arbeitstage := 0;
let rest := 0;
if Vorgabezeit > time(8, 0) then
arbeitstage := floor(number(Vorgabezeit / 8));
rest := number(Vorgabezeit - arbeitstage * 8);
Arbeitsbeginn + time(arbeitstage * 86400000 + rest * 3600000)
else
Arbeitsbeginn + Vorgabezeit
end

 

Vielleicht kann mir da jemand helfen?

LG

4 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Jordan,

    Vorausgesetzt, dein Arbeitsbeginn st immer mindestens 8 Stunden vor Mitternacht und du arbeitest auch am Wochenenden und Feiertagen:

    ---

    let my8h := 8 * 60 * 60 * 1000;
    let myYear := year(date(Arbeitsbeginn));
    let myMonth := month(date(Arbeitsbeginn));
    let myDay := day(date(Arbeitsbeginn));
    if number(Vorgabezeit) > my8h then
    let myDays := floor(number(Vorgabezeit) / my8h);
    let myRest := time(number(Vorgabezeit) % my8h);
    datetime(date(myYear, myMonth, myDay + myDays), time(Arbeitsbeginn) + myRest)
    else
    datetime(date(Arbeitsbeginn), time(Arbeitsbeginn) + Vorgabezeit)
    end

    ---

    Leo

    • Stefan_Jordanits
    • vor 5 Jahren
    • Gemeldet - anzeigen

    das wäre dann meine nächste frage wie ich wochenenden und Ft ausschließen kann? :)

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Da die Feiertage in jedem Bundesland anders sind und auch von jedem Unternehmen ansers besetzt sind würde ich die empfehlen eine Tabelle "Feiertage" anzulegen und die Feiertage selbst einzutragen. es gibt im Internet genug Listen mit Feiertagen. Dann wäre die Formel für Berechnungen:

    ---

    let my8h := 8 * 60 * 60 * 1000;
    let myYear := year(date(Arbeitsbeginn));
    let myMonth := month(date(Arbeitsbeginn));
    let myDay := day(date(Arbeitsbeginn));
    if number(Vorgabezeit) > my8h then
    let myDays := floor(number(Vorgabezeit) / my8h);
    var myFlag := 0;
    for i in range(myDays + 1) do
    if cnt(select Feiertage where Datum = date(myYear, myMonth, myDay + i + myFlag)) != 0 then
    myFlag := myFlag + 1
    end;
    if weekday(date(myYear, myMonth, myDay + i + myFlag)) = 5 then
    myFlag := myFlag + 2
    end
    end;
    myDays := myDays + myFlag;
    let myRest := time(number(Vorgabezeit) % my8h);
    datetime(date(myYear, myMonth, myDay + myDays), time(Arbeitsbeginn) + myRest)
    else
    datetime(date(Arbeitsbeginn), time(Arbeitsbeginn) + Vorgabezeit)
    end

    ---

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Moin, im Webinar-Team gibt es eine Datenbank namens "210_GlobaleFunktion_IstFeiertag", die eine Tabelle mit allen Feiertagen nach Bundesländern bis zum Jahr 2035 enthält. Kann sich jeder runterladen, entweder die ganze DB oder nur die Tabelle mit den Feiertagen.