|
Tip 87 -
Drie dagen later, maar niet op zaterdag of zondag

Iemand vraagt vanaf een bepaalde
datum de derde dag te berekenen. Dat is natuurlijk
kinderspel:
Day3 = DayStart +
2
Dat konden we zelf ook al. Maar
die derde dag mag niet op een zaterdag of op een zondag
vallen. Dat is al wat anders...
We kunnen dit oplossen met een
case-functie
in onze calculation-formule waarbij we eerst
controleren op welke dag DayStart valt. Hiertoe
beschikken we over twee functies:
- DayOfWeek
(die een getal geeft van 1 tot en met 7, waarbij 1 gelijk
is aan zondag, 2 aan maandag, enz.)
of
- DayName
(die de naam van de dag geeft, maar dat is tamelijk
onbetrouwbaar omdat testen op bijvoorbeeld "zondag"
enkel werkt op een Nederlandstalige machine; op andere
heet die dag immers Sunday of dimanche
enz.).
We krijgen dan deze
formule:
Day 3 =
Case(DayofWeek(DayStart) = 4;DayStart + 3;
DayofWeek(DayStart) = 5;DayStart + 3;DayStart + 2)
Natuurlijk hadden we het tweede
Case-statement aan het eerste kunnen toevoegen met een
OR:
Day 3 =
Case(DayOfWeek(DayStart) = 4 or DayOfWeek(DayStart) =
5;DayStart + 3;DayStart + 2)
Voor degenen die dit maar slappe
kost vinden, is er de spectaculaire formule uit het
Scriptology book van Osborne &
Petrowsky
DayStart +
Middle("2222432"; Mod(DayStart - Date(1;3;1904); 7) +
1;1)
Zie ook
Tip
2,
Tip
80,
Tip
124,
Tip
210.
|