Вычисления с учетом рабочего календаря
В статье рассмотрены примеры работы в сценариях с датами с учетом производственного календаря.
Примеры сценариев с использованием PublicAPI
1. Вычисление временного интервала между датами с учетом производственного календаря (данный метод возвратит количество рабочего времени между двумя датами или датами с временем в формате TimeSpan):
//зададим начало периода DateTime startTime = DateTime.Now; //зададим конец периода DateTime endTime = (DateTime)context.DataOkonchaniya; //подсчитаем интервал методом EvalWorkTimeDifference() context.VremennoyInterval = PublicAPI.Services.ProductionCalendar.EvalWorkTimeDifference(startTime, endTime);
2. Вычисление временного интервала между датами с учетом производственного календаря (данный метод возвратит количество полных рабочих дней в интервале и суммарное время от неполных между двумя датами или датами с временем в формате TimeSpan):
//зададим начало периода DateTime startTime = DateTime.Now; //зададим конец периода DateTime endTime = (DateTime)context.DataOkonchaniya; //подсчитаем интервал методом EvalWorkTimeSpanDifference() context.VremennoyInterval = PublicAPI.Services.ProductionCalendar.EvalWorkTimeSpanDifference(startTime, endTime);
3. Прибавление времени с учетом производственного календаря (учитываются только рабочие часы):
//к контекстной переменной NachaloPerioda прибавим 4 рабочих часа //результат запишем в контекстную переменную KonecPerioda //переменные NachaloPerioda и KonecPerioda имеют тип "Дата/время" context.KonecPerioda = PublicAPI.Services.ProductionCalendar.EvalTargetTime(context.NachaloPerioda.Value, TimeSpan.FromHours(4));
Примеры сценариев без использования PublicAPI
Для работы сценариев нужно подключить пространства имен:
using EleWise.ELMA.Scheduling; using EleWise.ELMA.Services;
//зададим начало периода DateTime startTime = DateTime.Now; //зададим конец периода DateTime endTime = (DateTime)context.DataOkonchaniya; //получим службу производственного календаря var calendar = Locator.GetServiceNotNull<IProductionCalendarService>(); //подсчитаем интервал методом EvalWorkTimeDifference() context.VremennoyInterval = calendar.EvalWorkTimeDifference(startTime, endTime);
2. Вычисление временного интервала между датами с учетом производственного календаря (данный метод возвратит количество полных рабочих дней в интервале и суммарное время от неполных между двумя датами или датами с временем в формате TimeSpan):
//зададим начало периода DateTime startTime = DateTime.Now; //зададим конец периода DateTime endTime = (DateTime)context.DataOkonchaniya; //получим службу производственного календаря var calendar = Locator.GetServiceNotNull<IProductionCalendarService>(); //подсчитаем интервал методом EvalWorkTimeSpanDifference() context.VremennoyInterval = calendar.EvalWorkTimeSpanDifference(startTime, endTime);
3. Прибавление времени с учетом производственного календаря (учитываются только рабочие часы):
//получим службу производственного календаря var calendar = Locator.GetServiceNotNull<IProductionCalendarService>(); //к контекстной переменной NachaloPerioda прибавим 4 рабочих часа //результат запишем в контекстную переменную KonecPerioda //переменные NachaloPerioda и KonecPerioda имеют тип "Дата/время" context.KonecPerioda = calendar.EvalTargetTime(context.NachaloPerioda.Value, TimeSpan.FromHours(4));