示例#1
0
        }         // SecondCustomCalendarHalfyearsTest

        private ITimeCalendar GetFiscalYearCalendar(FiscalYearAlignment yearAlignment)
        {
            return(new TimeCalendar(
                       new TimeCalendarConfig
            {
                YearType = YearType.FiscalYear,
                YearBaseMonth = YearMonth.September,
                FiscalFirstDayOfYear = DayOfWeek.Sunday,
                FiscalYearAlignment = yearAlignment,
                FiscalQuarterGrouping = FiscalQuarterGrouping.FourFourFiveWeeks
            }));
        }         // GetFiscalYearCalendar
示例#2
0
        }         // GetYear

        // ----------------------------------------------------------------------
        public static DateTime GetStartOfMonth(int year, YearMonth month, YearMonth yearBaseMonth, DayOfWeek yearStartDay,
                                               FiscalYearAlignment yearAlignment, FiscalQuarterGrouping quarterGrouping)
        {
            int diffMonthCount = month - yearBaseMonth;

            if (diffMonthCount < 0)
            {
                year--;
                diffMonthCount = TimeSpec.MonthsPerYear + diffMonthCount;
            }
            DateTime startOfYear        = GetStartOfYear(year, yearBaseMonth, yearStartDay, yearAlignment);
            int      fiveWeekMonthCount = (diffMonthCount + (int)quarterGrouping) / TimeSpec.MonthsPerQuarter;

            return(startOfYear.AddDays(
                       (diffMonthCount * TimeSpec.FiscalDaysPerShortMonth) + (fiveWeekMonthCount * TimeSpec.DaysPerWeek)));
        }         // GetStartOfMonth
示例#3
0
        }         // GetStartOfQuarter

        #endregion

        #region Halfyear

        // ----------------------------------------------------------------------
        public static DateTime GetStartOfHalfyear(int year, YearHalfyear halfyear, YearMonth yearBaseMonth, DayOfWeek yearStartDay,
                                                  FiscalYearAlignment yearAlignment)
        {
            DateTime startOfYear = GetStartOfYear(year, yearBaseMonth, yearStartDay, yearAlignment);
            DateTime startOfHalfyear;

            switch (yearAlignment)
            {
            case FiscalYearAlignment.None:
                startOfHalfyear = startOfYear.AddMonths(((int)halfyear - 1) * TimeSpec.MonthsPerHalfyear);
                break;

            case FiscalYearAlignment.LastDay:
            case FiscalYearAlignment.NearestDay:
                startOfHalfyear = startOfYear.AddDays(((int)halfyear - 1) * TimeSpec.FiscalWeeksPerHalfyear * TimeSpec.DaysPerWeek);
                break;

            default:
                throw new InvalidOperationException(string.Format("unknown year alignment {0}", yearAlignment));
            }
            return(startOfHalfyear);
        }         // GetStartOfHalfyear
示例#4
0
        }         // GetFiscalYear

        // ----------------------------------------------------------------------
        public static DateTime GetStartOfYear(int year, YearMonth yearBaseMonth, DayOfWeek yearStartDay, FiscalYearAlignment yearAlignment)
        {
            DateTime startOfYear = new DateTime(year, (int)yearBaseMonth, 1);

            switch (yearAlignment)
            {
            case FiscalYearAlignment.None:
                break;

            case FiscalYearAlignment.LastDay:
                while (startOfYear.DayOfWeek != yearStartDay)
                {
                    startOfYear = startOfYear.AddDays(-1);
                }
                break;

            case FiscalYearAlignment.NearestDay:
                int diffDayCount = Math.Abs((int)startOfYear.DayOfWeek - (int)yearStartDay);
                startOfYear = startOfYear.AddDays(diffDayCount > 3 ? TimeSpec.DaysPerWeek - diffDayCount : -diffDayCount);
                break;

            default:
                throw new InvalidOperationException(string.Format("unknown year alignment {0}", yearAlignment));
            }

            return(startOfYear);
        }         // GetStartOfYear