Inheritance: HalfyearTimeRange
示例#1
0
 // ----------------------------------------------------------------------
 public static void ShowHalfyear( Halfyear halfyear, string caption = "Halfyear" )
 {
     WriteLine( "{0}: {1}", caption, halfyear );
     WriteIndentLine( "YearBaseMonth: {0}", halfyear.YearBaseMonth );
     WriteIndentLine( "StartMonth: {0}", halfyear.StartMonth );
     WriteIndentLine( "Year: {0}", halfyear.Year );
     WriteIndentLine( "YearHalfyear: {0}", halfyear.YearHalfyear );
     WriteIndentLine( "IsCalendarHalfyear: {0}", halfyear.IsCalendarHalfyear );
     WriteIndentLine( "MultipleCalendarYears: {0}", halfyear.MultipleCalendarYears );
     WriteIndentLine( "HalfyearName: {0}", halfyear.HalfyearName );
     WriteIndentLine( "HalfyearOfYearName: {0}", halfyear.HalfyearOfYearName );
     WriteIndentLine( "FirstDayStart: {0}", Format( halfyear.FirstDayStart ) );
     WriteIndentLine( "LastDayStart: {0}", Format( halfyear.LastDayStart ) );
     WriteLine();
 }
示例#2
0
        public void AddHalfyearsTest()
        {
            int currentYear = ClockProxy.Clock.Now.Year;
            const YearMonth yearStartMonth = YearMonth.April;
            TimeCalendar calendar = TimeCalendar.New( TimeSpan.Zero, TimeSpan.Zero, yearStartMonth );

            DateTime calendarStartDate = new DateTime( currentYear, 4, 1 );
            Halfyear calendarHalfyear = new Halfyear( currentYear, YearHalfyear.First, calendar );

            Assert.AreEqual( calendarHalfyear.AddHalfyears( 0 ), calendarHalfyear );

            Halfyear prevH1 = calendarHalfyear.AddHalfyears( -1 );
            Assert.AreEqual( prevH1.YearHalfyear, YearHalfyear.Second );
            Assert.AreEqual( prevH1.BaseYear, currentYear - 1 );
            Assert.AreEqual( prevH1.Start, calendarStartDate.AddMonths( -6 ) );
            Assert.AreEqual( prevH1.End, calendarStartDate );

            Halfyear prevH2 = calendarHalfyear.AddHalfyears( -2 );
            Assert.AreEqual( prevH2.YearHalfyear, YearHalfyear.First );
            Assert.AreEqual( prevH2.BaseYear, currentYear - 1 );
            Assert.AreEqual( prevH2.Start, calendarStartDate.AddMonths( -12 ) );
            Assert.AreEqual( prevH2.End, calendarStartDate.AddMonths( -6 ) );

            Halfyear prevH3 = calendarHalfyear.AddHalfyears( -3 );
            Assert.AreEqual( prevH3.YearHalfyear, YearHalfyear.Second );
            Assert.AreEqual( prevH3.BaseYear, currentYear - 2 );
            Assert.AreEqual( prevH3.Start, calendarStartDate.AddMonths( -18 ) );
            Assert.AreEqual( prevH3.End, calendarStartDate.AddMonths( -12 ) );

            Halfyear futureH1 = calendarHalfyear.AddHalfyears( 1 );
            Assert.AreEqual( futureH1.YearHalfyear, YearHalfyear.Second );
            Assert.AreEqual( futureH1.BaseYear, currentYear );
            Assert.AreEqual( futureH1.Start, calendarStartDate.AddMonths( 6 ) );
            Assert.AreEqual( futureH1.End, calendarStartDate.AddMonths( 12 ) );

            Halfyear futureH2 = calendarHalfyear.AddHalfyears( 2 );
            Assert.AreEqual( futureH2.YearHalfyear, YearHalfyear.First );
            Assert.AreEqual( futureH2.BaseYear, currentYear + 1 );
            Assert.AreEqual( futureH2.Start, calendarStartDate.AddMonths( 12 ) );
            Assert.AreEqual( futureH2.End, calendarStartDate.AddMonths( 18 ) );

            Halfyear futureH3 = calendarHalfyear.AddHalfyears( 3 );
            Assert.AreEqual( futureH3.YearHalfyear, YearHalfyear.Second );
            Assert.AreEqual( futureH3.BaseYear, currentYear + 1 );
            Assert.AreEqual( futureH3.Start, calendarStartDate.AddMonths( 18 ) );
            Assert.AreEqual( futureH3.End, calendarStartDate.AddMonths( 24 ) );
        }
示例#3
0
        // ----------------------------------------------------------------------
        public static void ShowAll( int periodCount, int startYear, YearHalfyear yearHalfyear, TimeCalendarConfig calendarConfig )
        {
            WriteLine( "Input: count={0}, year={1}, halfyear={2}", periodCount, startYear, yearHalfyear );
            WriteLine();

            HalfyearTimeRange halfyearTimeRange;
            if ( periodCount == 1 )
            {
                Halfyear halfyear = new Halfyear( startYear, yearHalfyear, new TimeCalendar( calendarConfig ) );
                halfyearTimeRange = halfyear;

                Halfyear previousHalfyear = halfyear.GetPreviousHalfyear();
                Halfyear nextHalfyear = halfyear.GetNextHalfyear();

                ShowHalfyear( halfyear );
                ShowCompactHalfyear( previousHalfyear, "Previous Halfyear" );
                ShowCompactHalfyear( nextHalfyear, "Next Halfyear" );
                WriteLine();
            }
            else
            {
                Halfyears halfyears = new Halfyears( startYear, yearHalfyear, periodCount, new TimeCalendar( calendarConfig ) );
                halfyearTimeRange = halfyears;

                ShowHalfyears( halfyears );
                WriteLine();

                foreach ( Halfyear halfyear in halfyears.GetHalfyears() )
                {
                    ShowCompactHalfyear( halfyear );
                }
                WriteLine();
            }

            foreach ( Quarter quarter in halfyearTimeRange.GetQuarters() )
            {
                QuarterDemo.ShowCompactQuarter( quarter );
            }
            WriteLine();
            foreach ( Month month in halfyearTimeRange.GetMonths() )
            {
                MonthDemo.ShowCompactMonth( month );
            }
            WriteLine();
        }
示例#4
0
        public void CalendarHalfyearTest()
        {
            int currentYear = ClockProxy.Clock.Now.Year;
            TimeCalendar calendar = TimeCalendar.New( TimeSpan.Zero, TimeSpan.Zero );

            Halfyear h1 = new Halfyear( currentYear, YearHalfyear.First, calendar );
            Assert.IsTrue( h1.IsReadOnly );
            Assert.IsTrue( h1.IsCalendarHalfyear );
            Assert.AreEqual( h1.YearBaseMonth, TimeSpec.CalendarYearStartMonth );
            Assert.AreEqual( h1.YearHalfyear, YearHalfyear.First );
            Assert.AreEqual( h1.BaseYear, currentYear );
            Assert.AreEqual( h1.Start, new DateTime( currentYear, 1, 1 ) );
            Assert.AreEqual( h1.End, new DateTime( currentYear, 7, 1 ) );

            Halfyear h2 = new Halfyear( currentYear, YearHalfyear.Second, calendar );
            Assert.IsTrue( h2.IsReadOnly );
            Assert.IsTrue( h2.IsCalendarHalfyear );
            Assert.AreEqual( h2.YearBaseMonth, TimeSpec.CalendarYearStartMonth );
            Assert.AreEqual( h2.YearHalfyear, YearHalfyear.Second );
            Assert.AreEqual( h2.BaseYear, currentYear );
            Assert.AreEqual( h2.Start, new DateTime( currentYear, 7, 1 ) );
            Assert.AreEqual( h2.End, new DateTime( currentYear + 1, 1, 1 ) );
        }
示例#5
0
 public void YearBaseMonthTest()
 {
     int currentYear = ClockProxy.Clock.Now.Year;
     Halfyear halfyear = new Halfyear( currentYear, YearHalfyear.First, TimeCalendar.New( YearMonth.April ) );
     Assert.AreEqual( halfyear.YearBaseMonth, YearMonth.April );
     Assert.AreEqual( new Halfyear( currentYear, YearHalfyear.Second ).YearBaseMonth, YearMonth.January );
 }
示例#6
0
        public void InitValuesTest()
        {
            DateTime now = ClockProxy.Clock.Now;
            DateTime firstHalfyear = new DateTime( now.Year, 1, 1 );
            DateTime secondHalfyear = new DateTime( now.Year, 7, 1 );
            Halfyear halfyear = new Halfyear( now.Year, YearHalfyear.First, TimeCalendar.NewEmptyOffset() );

            Assert.AreEqual( halfyear.Start.Year, firstHalfyear.Year );
            Assert.AreEqual( halfyear.Start.Month, firstHalfyear.Month );
            Assert.AreEqual( halfyear.Start.Day, firstHalfyear.Day );
            Assert.AreEqual( halfyear.Start.Hour, 0 );
            Assert.AreEqual( halfyear.Start.Minute, 0 );
            Assert.AreEqual( halfyear.Start.Second, 0 );
            Assert.AreEqual( halfyear.Start.Millisecond, 0 );

            Assert.AreEqual( halfyear.End.Year, secondHalfyear.Year );
            Assert.AreEqual( halfyear.End.Month, secondHalfyear.Month );
            Assert.AreEqual( halfyear.End.Day, secondHalfyear.Day );
            Assert.AreEqual( halfyear.End.Hour, 0 );
            Assert.AreEqual( halfyear.End.Minute, 0 );
            Assert.AreEqual( halfyear.End.Second, 0 );
            Assert.AreEqual( halfyear.End.Millisecond, 0 );
        }
示例#7
0
        public void GetQuartersTest()
        {
            int currentYear = ClockProxy.Clock.Now.Year;
            TimeCalendar timeCalendar = TimeCalendar.New( YearMonth.October );
            Halfyear h1 = new Halfyear( currentYear, YearHalfyear.First, timeCalendar );

            ITimePeriodCollection h1Quarters = h1.GetQuarters();
            Assert.AreNotEqual( h1Quarters, null );

            int h1Index = 0;
            foreach ( Quarter h1Quarter in h1Quarters )
            {
                Assert.AreEqual( h1Quarter.BaseYear, h1.BaseYear );
                Assert.AreEqual( h1Quarter.YearQuarter, h1Index == 0 ? YearQuarter.First : YearQuarter.Second );
                Assert.AreEqual( h1Quarter.Start, h1.Start.AddMonths( h1Index * TimeSpec.MonthsPerQuarter ) );
                Assert.AreEqual( h1Quarter.End, h1Quarter.Calendar.MapEnd( h1Quarter.Start.AddMonths( TimeSpec.MonthsPerQuarter ) ) );
                h1Index++;
            }
            Assert.AreEqual( h1Index, TimeSpec.QuartersPerHalfyear );

            Halfyear h2 = new Halfyear( currentYear, YearHalfyear.Second, timeCalendar );

            ITimePeriodCollection h2Quarters = h2.GetQuarters();
            Assert.AreNotEqual( h2Quarters, null );

            int h2Index = 0;
            foreach ( Quarter h2Quarter in h2Quarters )
            {
                Assert.AreEqual( h2Quarter.BaseYear, h2.BaseYear );
                Assert.AreEqual( h2Quarter.YearQuarter, h2Index == 0 ? YearQuarter.Third : YearQuarter.Fourth );
                Assert.AreEqual( h2Quarter.Start, h2.Start.AddMonths( h2Index * TimeSpec.MonthsPerQuarter ) );
                Assert.AreEqual( h2Quarter.End, h2Quarter.Calendar.MapEnd( h2Quarter.Start.AddMonths( TimeSpec.MonthsPerQuarter ) ) );
                h2Index++;
            }
            Assert.AreEqual( h2Index, TimeSpec.QuartersPerHalfyear );
        }
示例#8
0
        public void GetMonthsTest()
        {
            int currentYear = ClockProxy.Clock.Now.Year;
            TimeCalendar timeCalendar = TimeCalendar.New( YearMonth.October );
            Halfyear halfyear = new Halfyear( currentYear, YearHalfyear.First, timeCalendar );

            ITimePeriodCollection months = halfyear.GetMonths();
            Assert.AreNotEqual( months, null );

            int index = 0;
            foreach ( Month month in months )
            {
                Assert.AreEqual( month.Start, halfyear.Start.AddMonths( index ) );
                Assert.AreEqual( month.End, month.Calendar.MapEnd( month.Start.AddMonths( 1 ) ) );
                index++;
            }
            Assert.AreEqual( index, TimeSpec.MonthsPerHalfyear );
        }
示例#9
0
        public void DefaultHalfyearTest()
        {
            int currentYear = ClockProxy.Clock.Now.Year;
            const YearMonth yearStartMonth = YearMonth.April;
            TimeCalendar calendar = TimeCalendar.New( TimeSpan.Zero, TimeSpan.Zero, yearStartMonth );

            Halfyear h1 = new Halfyear( currentYear, YearHalfyear.First, calendar );
            Assert.IsTrue( h1.IsReadOnly );
            Assert.IsFalse( h1.IsCalendarHalfyear );
            Assert.AreEqual( h1.YearBaseMonth, yearStartMonth );
            Assert.AreEqual( h1.YearHalfyear, YearHalfyear.First );
            Assert.AreEqual( h1.BaseYear, currentYear );
            Assert.AreEqual( h1.Start, new DateTime( currentYear, 4, 1 ) );
            Assert.AreEqual( h1.End, new DateTime( currentYear, 10, 1 ) );

            Halfyear h2 = new Halfyear( currentYear, YearHalfyear.Second, calendar );
            Assert.IsTrue( h2.IsReadOnly );
            Assert.IsFalse( h2.IsCalendarHalfyear );
            Assert.AreEqual( h2.YearBaseMonth, yearStartMonth );
            Assert.AreEqual( h2.YearHalfyear, YearHalfyear.Second );
            Assert.AreEqual( h2.BaseYear, currentYear );
            Assert.AreEqual( h2.Start, new DateTime( currentYear, 10, 1 ) );
            Assert.AreEqual( h2.End, new DateTime( currentYear + 1, 4, 1 ) );
        }
示例#10
0
 public void DefaultCalendarTest()
 {
     DateTime yearStart = new DateTime( ClockProxy.Clock.Now.Year, 1, 1 );
     foreach ( YearHalfyear yearHalfyear in Enum.GetValues( typeof( YearHalfyear ) ) )
     {
         int offset = (int)yearHalfyear - 1;
         Halfyear halfyear = new Halfyear( yearStart.AddMonths( TimeSpec.MonthsPerHalfyear * offset ) );
         Assert.AreEqual( halfyear.YearBaseMonth, YearMonth.January );
         Assert.AreEqual( halfyear.BaseYear, yearStart.Year );
         Assert.AreEqual( halfyear.Start, yearStart.AddMonths( TimeSpec.MonthsPerHalfyear * offset ).Add( halfyear.Calendar.StartOffset ) );
         Assert.AreEqual( halfyear.End, yearStart.AddMonths( TimeSpec.MonthsPerHalfyear * ( offset + 1 ) ).Add( halfyear.Calendar.EndOffset ) );
     }
 }
示例#11
0
 // ----------------------------------------------------------------------
 private void UpdateSelectedPeriodInfo()
 {
     TimeCalendar timeCalendar = TimeCalendar.New( SelectedYearBaseMonth );
     switch ( SelectedPeriodMode )
     {
         case TimePeriodMode.Year:
             Year year = new Year( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Year", year );
             periodInfo.AddItem( "YearBaseMonth", year.YearBaseMonth );
             periodInfo.AddItem( "IsCalendarYear", year.IsCalendarYear );
             periodInfo.AddItem( "StartYear", year.StartYear );
             periodInfo.AddItem( "FirstDayStart", year.FirstDayStart );
             periodInfo.AddItem( "LastDayStart", year.LastDayStart );
             periodInfo.AddItem( "LastMonthStart", year.LastMonthStart );
             periodInfo.AddItem( "YearName", year.YearName );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", year.GetPreviousYear() );
             periodInfo.AddItem( "Next", year.GetNextYear() );
             periodInfo.AddSubitems( "Halfyears", year.GetHalfyears() );
             periodInfo.AddSubitems( "Quarters", year.GetQuarters() );
             periodInfo.AddSubitems( "Months", year.GetMonths() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Halfyear:
             Halfyear halfyear = new Halfyear( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Halfyear", halfyear );
             periodInfo.AddItem( "YearBaseMonth", halfyear.YearBaseMonth );
             periodInfo.AddItem( "StartMonth", halfyear.StartMonth );
             periodInfo.AddItem( "Year", halfyear.Year );
             periodInfo.AddItem( "YearHalfyear", halfyear.YearHalfyear );
             periodInfo.AddItem( "IsCalendarHalfyear", halfyear.IsCalendarHalfyear );
             periodInfo.AddItem( "MultipleCalendarYears", halfyear.MultipleCalendarYears );
             periodInfo.AddItem( "HalfyearName", halfyear.HalfyearName );
             periodInfo.AddItem( "HalfyearOfYearName", halfyear.HalfyearOfYearName );
             periodInfo.AddItem( "LastDayStart", halfyear.LastDayStart );
             periodInfo.AddItem( "LastMonthStart", halfyear.LastMonthStart );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previousr", halfyear.GetPreviousHalfyear() );
             periodInfo.AddItem( "Next", halfyear.GetNextHalfyear() );
             periodInfo.AddSubitems( "Quarters", halfyear.GetQuarters() );
             periodInfo.AddSubitems( "Months", halfyear.GetMonths() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Quarter:
             Quarter quarter = new Quarter( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Quarter", quarter );
             periodInfo.AddItem( "YearBaseMonth", quarter.YearBaseMonth );
             periodInfo.AddItem( "StartMonth", quarter.StartMonth );
             periodInfo.AddItem( "Year", quarter.Year );
             periodInfo.AddItem( "YearQuarter", quarter.YearQuarter );
             periodInfo.AddItem( "IsCalendarQuarter", quarter.IsCalendarQuarter );
             periodInfo.AddItem( "MultipleCalendarYears", quarter.MultipleCalendarYears );
             periodInfo.AddItem( "QuarterName", quarter.QuarterName );
             periodInfo.AddItem( "QuarterOfYearName", quarter.QuarterOfYearName );
             periodInfo.AddItem( "LastDayStart", quarter.FirstDayStart );
             periodInfo.AddItem( "LastMonthStart", quarter.LastDayStart );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", quarter.GetPreviousQuarter() );
             periodInfo.AddItem( "Next", quarter.GetNextQuarter() );
             periodInfo.AddSubitems( "Months", quarter.GetMonths() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Month:
             Month month = new Month( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Month", month );
             periodInfo.AddItem( "YearBaseMonth", month.YearMonth );
             periodInfo.AddItem( "Year", month.Year );
             periodInfo.AddItem( "DaysInMonth", month.DaysInMonth );
             periodInfo.AddItem( "MonthName", month.MonthName );
             periodInfo.AddItem( "MonthOfYearName", month.MonthOfYearName );
             periodInfo.AddItem( "LastDayStart", month.FirstDayStart );
             periodInfo.AddItem( "LastMonthStart", month.LastDayStart );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", month.GetPreviousMonth() );
             periodInfo.AddItem( "Next", month.GetNextMonth() );
             periodInfo.AddSubitems( "Days", month.GetDays() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Week:
             Week week = new Week( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Week", week );
             periodInfo.AddItem( "MultipleCalendarYears", week.MultipleCalendarYears );
             periodInfo.AddItem( "FirstDayStart", week.FirstDayStart );
             periodInfo.AddItem( "FirstDayOfWeek", week.FirstDayOfWeek );
             periodInfo.AddItem( "LastDayStart", week.LastDayStart );
             periodInfo.AddItem( "LastDayOfWeek", week.LastDayOfWeek );
             periodInfo.AddItem( "WeekOfYear", week.WeekOfYear );
             periodInfo.AddItem( "WeekOfYearName", week.WeekOfYearName );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", week.GetPreviousWeek() );
             periodInfo.AddItem( "Next", week.GetNextWeek() );
             periodInfo.AddSubitems( "Days", week.GetDays() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Day:
             Day day = new Day( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Day", day );
             periodInfo.AddItem( "Year", day.Year );
             periodInfo.AddItem( "FirstDayStart", day.FirstDayStart );
             periodInfo.AddItem( "Month", day.Month );
             periodInfo.AddItem( "DayValue", day.DayValue );
             periodInfo.AddItem( "DayOfWeek", day.DayOfWeek );
             periodInfo.AddItem( "DayName", day.DayName );
             periodInfo.AddItem( "FirstHourStart", day.FirstHourStart );
             periodInfo.AddItem( "LastHourStart", day.LastHourStart );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", day.GetPreviousDay() );
             periodInfo.AddItem( "Next", day.GetNextDay() );
             periodInfo.AddSubitems( "Hours", day.GetHours() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Hour:
             Hour hour = new Hour( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Hour", hour );
             periodInfo.AddItem( "Year", hour.Year );
             periodInfo.AddItem( "Month", hour.Month );
             periodInfo.AddItem( "Day", hour.Day );
             periodInfo.AddItem( "HourValue", hour.HourValue );
             periodInfo.AddItem( "FirstMinuteStart", hour.FirstMinuteStart );
             periodInfo.AddItem( "LastMinuteStart", hour.LastMinuteStart );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", hour.GetPreviousHour() );
             periodInfo.AddItem( "Next", hour.GetNextHour() );
             periodInfo.AddSubitems( "Minutes", hour.GetMinutes() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
         case TimePeriodMode.Minute:
             Minute minute = new Minute( WorkingDate, timeCalendar );
             periodInfo.Clear();
             periodInfo.AddItem( "Minute", minute );
             periodInfo.AddItem( "Year", minute.Year );
             periodInfo.AddItem( "Month", minute.Month );
             periodInfo.AddItem( "Day", minute.Day );
             periodInfo.AddItem( "Hour", minute.Hour );
             periodInfo.AddItem( "MinuteValue", minute.MinuteValue );
             periodInfo.AddSection( "Previous/Next" );
             periodInfo.AddItem( "Previous", minute.GetPreviousMinute() );
             periodInfo.AddItem( "Next", minute.GetNextMinute() );
             SelectedPeriodInfo = periodInfo.ToString();
             break;
     }
 }
示例#12
0
 // ----------------------------------------------------------------------
 public static void ShowCompactHalfyear( Halfyear halfyear, string caption = "Halfyear" )
 {
     WriteLine( "{0}: {1}", caption, halfyear );
 }
示例#13
0
        // ----------------------------------------------------------------------
        private void SelectPeriod( PeriodSelectType periodSelectType )
        {
            int offset = 0;
            switch ( periodSelectType )
            {
                case PeriodSelectType.Previous:
                    offset = -1;
                    break;
                case PeriodSelectType.Current:
                    ResetWorkingPeriod();
                    return;
                case PeriodSelectType.Next:
                    offset = 1;
                    break;
            }

            switch ( WorkingTimePeriod )
            {
                case TimePeriodMode.Year:
                    Year year = new Year( WorkingPeriodStartDate );
                    SetWorkingPeriod( year.AddYears( offset ) );
                    break;
                case TimePeriodMode.Halfyear:
                    Halfyear halfyear = new Halfyear( WorkingPeriodStartDate );
                    SetWorkingPeriod( halfyear.AddHalfyears( offset ) );
                    break;
                case TimePeriodMode.Quarter:
                    Quarter quarter = new Quarter( WorkingPeriodStartDate );
                    SetWorkingPeriod( quarter.AddQuarters( offset ) );
                    break;
                case TimePeriodMode.Month:
                    Month month = new Month( WorkingPeriodStartDate );
                    SetWorkingPeriod( month.AddMonths( offset ) );
                    break;
                case TimePeriodMode.Week:
                    Week week = new Week( WorkingPeriodStartDate );
                    SetWorkingPeriod( week.AddWeeks( offset ) );
                    break;
                case TimePeriodMode.Day:
                    Day day = new Day( WorkingPeriodStartDate );
                    SetWorkingPeriod( day.AddDays( offset ) );
                    break;
            }
        }