GetDurationInWorkingDays – получить количество рабочих дней в интервале дат
<< Click to Display Table of Contents >> Объектная модель > CoreEntities – администрирование > WorkingTime – календари рабочего времени GetDurationInWorkingDays – получить количество рабочих дней в интервале дат |
Метод используется для получения количества рабочих дней в указанном интервале дат.
Перегрузки
GetDurationInWorkingDays(DateTime startDate, DateTime endDate) |
Получить количество рабочих дней в указанном интервале дат |
GetDurationInWorkingDays(DateTime startDate, DateTime endDate, IRecipient recipient) |
Получить количество рабочих дней пользователя в указанном интервале дат |
Синтаксис
C# |
public static int GetDurationInWorkingDays(DateTime startDate, DateTime endDate, IRecipient recipient); |
Параметры
startDate – дата начала;
endDate – дата окончания;
recipient – пользователь, для которого запрашивается количество рабочих дней в интервале дат.
Возвращаемое значение
Количество рабочих дней. При расчете рабочих дней метод исключает выходные дни согласно настройкам календарей рабочего времени.
Если в параметрах startDate и endDate передана дата со временем, то время не учитывается. Для расчета количества рабочего времени между указанными датами рекомендуется использовать метод GetDurationInWorkingHours().
В таблице приведены примеры возвращаемых значений метода в зависимости от заданного интервала дат:
startDate |
endDate |
Возвращаемое значение |
Примечание |
---|---|---|---|
11.11.20 08:30 (среда) |
13.11.20 16:00 (пятница) |
3 |
Время не учитывается |
13.11.20 (пятница) |
13.11.20 (пятница) |
1 |
Передана одна и та же дата |
14.11.20 (суббота) |
14.11.20 (суббота) |
0 |
Передан выходной день |
11.11.20 (среда) |
14.11.20 (суббота) |
3 |
Рассчитаны только рабочие дни, 14.11 – выходной день |
Пример 1. Получение разницы между двумя датами в рабочих днях
var durationInDays = WorkingTime.GetDurationInWorkingDays(startDate, endDate);
Пример 2. Подсчет рабочих дней в промежутке времени
/// <param name="startDate">Начало.</param>
/// <param name="endDate">Окончание.</param>
/// <param name="user">Пользователь.</param>
/// <returns>Количество рабочих дней.</returns>
[Public]
public static int DurationInWorkdays(DateTime startDate, DateTime endDate, IUser user)
{
var start = Functions.Module.GetDateWithTime(startDate, user);
var end = Functions.Module.GetDateWithTime(endDate, user);
var days = (end - start).TotalDays;
var calendarDays = (int)(endDate.Date - startDate.Date).TotalDays;
var workdays = WorkingTime.GetDurationInWorkingDays(start, end);
if (days < 0 || Equals(start, end))
return -1;
if (calendarDays == 0 && workdays == 1)
return 0;
return Math.Min(calendarDays, workdays);
}
© Компания Directum, 2024 |