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
-
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
-
das wäre dann meine nächste frage wie ich wochenenden und Ft ausschließen kann? :)
-
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
-
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.
Content aside
- vor 5 JahrenZuletzt aktiv
- 4Antworten
- 1188Ansichten