Rolf B: Berechnungen mit Datum und Arbeitstagen

Beitrag lesen

Hallo Herbert,

Datum(Einreise) - Arbeitstage (ohne Feiertage) = Datum(Abgabe)

"Arbeitstag" ist mehrdeutig. Der Samstag ist ein Werktag. Ist er für Deine Zwecke ein Arbeitstag?

Definiere als nächstes "Feiertag". Beachte dabei

  • bewegliche Feiertage (in christlich orientierten Kulturen auf Ostern basierend)
  • regionale Feiertage (nach Staat / Bundesland / Gemeinde)
  • stille Tage wie Heiligabend oder Silvester, wo ggf. nicht gearbeitet wird

Deine beiläufig formulierte Anforderung "Arbeitstage ohne Feiertage" ist eine der Hammeraufgaben der Datumsberechnung.

Wenn es nur um die Wochenenden ginge, könnte man den AT Wert durch 5 teilen und abrunden. Das sind die Arbeitswochen W, die abzuziehen sind. Der Rest dieser Division sind die weiteren Tage T. Beispiel: Wenn AT=23, sind das 4 Arbeitswochen und 3 Tage. Diese 3 Tage zieht man als erstes vom Anreisetag ab. Kommt man dabei auf einem Sa oder So heraus, geht man auf den Freitag zurück. Danach zieht man die Anzahl der Wochen mal 7 ab.

Nur - in dieser Zeit können null oder mehr Feiertage liegen. Die kann man zählen, und entsprechend viele weitere Tage abziehen. In der so abgezogenen Frist können wieder Feiertage liegen. Die kann man zählen, und entsprechend viele weitere Tage abziehen. In der so abge.... Man muss eine Schleife bilden und das so lange wiederholen, bis man keinen Feiertag mehr drin hat.

Aber dafür braucht man eine Übersicht der zu berücksichtigenden Feiertage. Die willst Du sicher nicht für jedes Jahr von Hand eingeben. Also musst Du die beweglichen Feiertage berechnen und wissen, welche potenziellen Feiertage für die Rechnung relevant sind. Da Feiertage je nach kulturellem Kontext verschieden sind, kommt nun die Frage: Für welchen Kontext muss das gemacht werden? Sag nicht "Deutschland". Da gibt's schon mehrere. Und wenn Du "Welt" sagst - viel Spaß mit Ramadan, Hindufesten, chinesischem Kalender und vielem, was ich in meiner globalen Ignoranz noch nie gehört habe.

Rolf

--
sumpsi - posui - obstruxi