protected override void InnerInterpret(IRuleHandler handler) { ChildExpression.Interpret(handler); DateTime easterDate = easterContext.GetCurrentEaster(handler.Settings.Date.Year); ValueCalculated = easterDate.AddDays((int)ChildExpression.ValueCalculated); }
protected override void InnerInterpret(IRuleHandler handler) { DateTime easterDate = easterContext.GetCurrentEaster(handler.Settings.Date.Year); ChildExpression.Interpret(handler); //DateTime easterDate = handler.GetCurrentEaster(date.Year); ValueCalculated = ((DateTime)ChildExpression.ValueCalculated).Subtract(easterDate).Days; ValueExpression = new ItemInt((int)ValueCalculated); }
/// <summary> /// Вычисляет номер гласа по введенной дате /// </summary> /// <param name="date"></param> /// <returns></returns> public int CalculateIhosNumber(DateTime date) { DateTime dEaster = easterContext.GetCurrentEaster(date.Year); //Пасха в прошлом году DateTime dPastEaster = easterContext.GetCurrentEaster(date.Year - 1); //вычисляем количество дней между текущим днем и днем Пасхи int day = date.DayOfYear - dEaster.DayOfYear; //вычисляем глас // (остаток от деления на 56) / 7 int ihos = day; if (day < 0) { //отталкиваемся от Пасхи в прошлом году //ниже получаем день относительно прошлой Пасхи ihos = 366 + date.DayOfYear - dPastEaster.DayOfYear; } ihos = (ihos % 56) / 7; if (ihos == 0) { ihos = 8; } return(ihos); }