WorkDayDiff
Zastosowanie
Funkcja zwraca liczbę dni roboczych pomiędzy datami z uwzględnieniem dat końcowych. Uwzględnia również wszystkie dni wolne w tym święta stałe jak i ruchome dla regionów: Polski, Węgier i Czech.
Nie ma możliwości definiowania własnych dni wolnych. W przypadku takiego wymagania należy zgłosić się do Astrafox w celu zlecenia wykonania odpłatnej modyfikacji i wprowadzenia innych dni wolnych niż standardowe albo w celu wprowadzenia dni wolnych dla innego kraju niż wymienione wyżej.
Składnia
WorkDayDiff(firstDate, lastDate, saturdaysFree, region);
WorkDayDiff(firstDate, lastDate, saturdaysFree, sundaysFree, region);
Argumenty
- firstDate– (DateTime) data początkowa;
- lastDate – (DateTime) data końcowa;
- saturdaysFree – (Boolean) wskazuje, czy soboty mają być traktowane jako dni wolne od pracy (domyślnie – true);
- sundaysFree – (Boolean) [opcjonalny] wskazuje, czy niedziele mają być traktowane jako dni wolne od pracy (domyślnie – true);
- region – (String) symbol regionu, dla którego używamy funkcji (domyślnie – PL). Dopuszczalne wartości :[PL | HU | CZ ].
Zwracana wartość
Funkcja zwraca wartość numeryczną. Zwracana wartość odpowiada liczbie dni pracujących pomiędzy wskazanymi datami.
UWAGA! Od wydania 240331 zmieniono działanie funkcji, a dokładnie to obsługę wyjątków w sytuacji, gdy daty firstDate i lastDate są takie same. Przed zmianą funkcja wyrzucała wyjątek, rejestrowany w logu systemowym, zaś po zmianie w takiej sytuacji zwróci wartość 0 (zero).
Elementy powiązane
- Funkcja Today()
- Funkcja DateTime()
Przykłady
Przykład 1
workDayCount = WorkDayDiff([DateFrom],[DateTo],true,"PL");
Pobiera wartość z pól [DateFrom] oraz [DateTo], uwzględnia soboty jako dni wolne oraz region Polski.
Warianty dla różnych dat:
- [DateFrom] = „2016-03-21” (poniedziałek), [DateTo] = „2016-03-25” (piątek) , liczba dni pracujących 5
- [DateFrom] = „2016-03-21” (poniedziałek), [DateTo] = „2016-03-21” (poniedziałek) , liczba dni pracujących 1
- [DateFrom] = „2016-03-20” (niedziela), [DateTo] = „2016-03-20” (niedziela) , liczba dni pracujących 0
- [DateFrom] = „2016-03-18” (piątek), [DateTo] = „2016-03-21” (poniedziałek) , liczba dni pracujących 2
- [DateFrom] = „2016-04-30” (piątek), [DateTo] = „2016-05-06” (piątek) , liczba dni pracujących 5 (wolna sobota, niedziela oraz 3 maja (wtorek)
- [DateFrom] = „2016-03-25” (piątek), [DateTo] = „2016-04-01” (piątek) , liczba dni pracujących 5 (wolna sobota, niedziela oraz poniedziałek Wielkanocny)
Przykład 2
Obliczenie liczby dni roboczych w bieżącym miesiącu.
/* W tym celu wyznaczamy pierwszy i ostatni dzień bieżącego miesiąca. */ /* pierwszy dzień bieżącego miesiąca */ firstDay = DateTime(DatePart("year",Today()),DatePart("month",Today()),1); /* ostatni dzień bieżącego miesiąca */ /* w tym celu ustalamy pierwszy dzień następnego miesiąca */ nextMonth = DateAdd("month", firstDay, 1); /* i odejmujemy 1 dzień */ lastDay = DateAdd("day", nextMonth, -1) /* obliczamy liczbę dni roboczych bieżącego miesiąca */ workDays = WorkDayDiff(firstDay, lastDay, true, "PL");