Print

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

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");
Czy artykuł był pomocny?
0 na 5 gwiazdek
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
5
How can we improve this article?
How Can We Improve This Article?