protected override void InnerInterpret(IRuleHandler handler)
        {
            ChildExpression.Interpret(handler);

            DateTime easterDate = easterContext.GetCurrentEaster(handler.Settings.Date.Year);

            ValueCalculated = easterDate.AddDays((int)ChildExpression.ValueCalculated);
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
        }