// ---------------------------------------------------------------------- public static void ShowMonth( Month month, string caption = "Month" ) { WriteLine( "{0}: {1}", caption, month ); WriteIndentLine( "YearMonth: {0}", month.YearMonth ); WriteIndentLine( "Year: {0}", month.Year ); WriteIndentLine( "YearMonth: {0}", month.YearMonth ); WriteIndentLine( "DaysInMonth: {0}", month.DaysInMonth ); WriteIndentLine( "MonthName: {0}", month.MonthName ); WriteIndentLine( "MonthOfYearName: {0}", month.MonthOfYearName ); WriteIndentLine( "FirstDayStart: {0}", Format( month.FirstDayStart ) ); WriteIndentLine( "LastDayStart: {0}", Format( month.LastDayStart ) ); WriteLine(); }
public void AddMonthsTest() { DateTime now = ClockProxy.Clock.Now; CultureTestData cultures = new CultureTestData(); foreach ( CultureInfo culture in cultures ) { DateTime currentYearMonthStart = new DateTime( now.Year, now.Month, 1 ); DateTime currentYearMonthEnd = currentYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( currentYearMonthStart.Year, currentYearMonthStart.Month ) ); Month currentYearMonth = new Month( currentYearMonthStart, TimeCalendar.New( culture, TimeSpan.Zero, TimeSpan.Zero ) ); Assert.AreEqual( currentYearMonth.Start, currentYearMonthStart ); Assert.AreEqual( currentYearMonth.End, currentYearMonthEnd ); Assert.AreEqual( currentYearMonth.AddMonths( 0 ), currentYearMonth ); DateTime previousYearMonthStart = new DateTime( now.Year - 1, now.Month, 1 ); DateTime previousYearMonthEnd = previousYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( previousYearMonthStart.Year, previousYearMonthStart.Month ) ); Month previousYearMonth = currentYearMonth.AddMonths( TimeSpec.MonthsPerYear * -1 ); Assert.AreEqual( previousYearMonth.Start, previousYearMonthStart ); Assert.AreEqual( previousYearMonth.End, previousYearMonthEnd ); Assert.AreEqual( previousYearMonth.YearMonth, currentYearMonth.YearMonth ); Assert.AreEqual( previousYearMonth.Start.Year, currentYearMonth.Start.Year - 1 ); Assert.AreEqual( previousYearMonth.End.Year, currentYearMonth.End.Year - 1 ); DateTime nextYearMonthStart = new DateTime( now.Year + 1, now.Month, 1 ); DateTime nextYearMonthEnd = nextYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( nextYearMonthStart.Year, nextYearMonthStart.Month ) ); Month nextYearMonth = currentYearMonth.AddMonths( TimeSpec.MonthsPerYear ); Assert.AreEqual( nextYearMonth.Start, nextYearMonthStart ); Assert.AreEqual( nextYearMonth.End, nextYearMonthEnd ); Assert.AreEqual( nextYearMonth.YearMonth, currentYearMonth.YearMonth ); Assert.AreEqual( nextYearMonth.Start.Year, currentYearMonth.Start.Year + 1 ); Assert.AreEqual( nextYearMonth.End.Year, currentYearMonth.End.Year + 1 ); } }
// ---------------------------------------------------------------------- public static void ShowAll( int periodCount, int year, YearMonth yearMonth ) { WriteLine( "Input: count={0}, year={1}, month={2}", periodCount, year, yearMonth ); WriteLine(); MonthTimeRange monthTimeRange; if ( periodCount == 1 ) { Month month = new Month( year, yearMonth ); monthTimeRange = month; Month previousMonth = month.GetPreviousMonth(); Month nextMonth = month.GetNextMonth(); ShowMonth( month ); ShowCompactMonth( previousMonth, "Previous Month" ); ShowCompactMonth( nextMonth, "Next Month" ); WriteLine(); } else { Months months = new Months( year, yearMonth, periodCount ); monthTimeRange = months; ShowMonths( months ); WriteLine(); foreach ( Month month in months.GetMonths() ) { ShowCompactMonth( month ); } WriteLine(); } foreach ( Day day in monthTimeRange.GetDays() ) { DayDemo.ShowCompactDay( day ); } WriteLine(); }
public void YearMonthTest() { int currentYear = ClockProxy.Clock.Now.Year; TimeCalendar calendar = TimeCalendar.New( TimeSpan.Zero, TimeSpan.Zero ); Month january = new Month( currentYear, TimeSpec.CalendarYearStartMonth, calendar ); Assert.AreEqual( january.YearMonth, TimeSpec.CalendarYearStartMonth ); Assert.AreEqual( january.Start, new DateTime( currentYear, 1, 1 ) ); Assert.AreEqual( january.End, new DateTime( currentYear, 2, 1 ) ); }
public void MonthMomentTest() { Month month = new Month( new DateTime( 2008, 1, 15 ), TimeCalendar.New( TimeSpan.Zero, TimeSpan.Zero ) ); Assert.IsTrue( month.IsReadOnly ); Assert.AreEqual( month.Year, 2008 ); Assert.AreEqual( month.YearMonth, TimeSpec.CalendarYearStartMonth ); Assert.AreEqual( month.Start, new DateTime( 2008, 1, 1 ) ); Assert.AreEqual( month.End, new DateTime( 2008, 2, 1 ) ); Month previous = month.GetPreviousMonth(); Assert.AreEqual( previous.Year, 2007 ); Assert.AreEqual( previous.YearMonth, YearMonth.December ); Assert.AreEqual( previous.Start, new DateTime( 2007, 12, 1 ) ); Assert.AreEqual( previous.End, new DateTime( 2008, 1, 1 ) ); Month next = month.GetNextMonth(); Assert.AreEqual( next.Year, 2008 ); Assert.AreEqual( next.YearMonth, YearMonth.February ); Assert.AreEqual( next.Start, new DateTime( 2008, 2, 1 ) ); Assert.AreEqual( next.End, new DateTime( 2008, 3, 1 ) ); }
public void InitValuesTest() { DateTime now = ClockProxy.Clock.Now; DateTime firstMonth = new DateTime( now.Year, now.Month, 1 ); DateTime secondMonth = firstMonth.AddMonths( 1 ); Month month = new Month( now.Year, (YearMonth)now.Month, TimeCalendar.NewEmptyOffset() ); Assert.AreEqual( month.Start.Year, firstMonth.Year ); Assert.AreEqual( month.Start.Month, firstMonth.Month ); Assert.AreEqual( month.Start.Day, firstMonth.Day ); Assert.AreEqual( month.Start.Hour, 0 ); Assert.AreEqual( month.Start.Minute, 0 ); Assert.AreEqual( month.Start.Second, 0 ); Assert.AreEqual( month.Start.Millisecond, 0 ); Assert.AreEqual( month.End.Year, secondMonth.Year ); Assert.AreEqual( month.End.Month, secondMonth.Month ); Assert.AreEqual( month.End.Day, secondMonth.Day ); Assert.AreEqual( month.End.Hour, 0 ); Assert.AreEqual( month.End.Minute, 0 ); Assert.AreEqual( month.End.Second, 0 ); Assert.AreEqual( month.End.Millisecond, 0 ); }
public void GetPreviousMonthTest() { Month month = new Month(); Assert.AreEqual( month.GetPreviousMonth(), month.AddMonths( -1 ) ); }
// ---------------------------------------------------------------------- public Dictionary<DateTime, int> CountMonthDays( DateTime start, DateTime end ) { Dictionary<DateTime, int> monthDays = new Dictionary<DateTime, int>(); Month startMonth = new Month( start ); Month endMonth = new Month( end ); // single month request if ( startMonth.Equals( endMonth ) ) { monthDays.Add( startMonth.Start, end.Subtract( start ).Days ); return monthDays; } Month month = startMonth; while ( month.Start < endMonth.End ) { // start month if ( month.Equals( startMonth ) ) { monthDays.Add( month.Start, month.DaysInMonth - start.Day + 1 ); } // end month else if ( month.Equals( endMonth ) ) { monthDays.Add( month.Start, end.Day ); } // in-between month else { monthDays.Add( month.Start, month.DaysInMonth ); } month = month.GetNextMonth(); } return monthDays; }
} // EnterMonths // ---------------------------------------------------------------------- protected override bool EnterDays(Month month, CalendarPeriodCollectorContext context) { return (context.Scope == CalendarPeriodCollectorContext.CollectType.Hour); } // EnterDays
} // OnVisitYear // ---------------------------------------------------------------------- protected virtual bool OnVisitMonth(Month month, TContext context) { return(true); } // OnVisitMonth
} // EnterMonths // ---------------------------------------------------------------------- protected virtual bool EnterDays(Month month, TContext context) { return(true); } // EnterDays
// ---------------------------------------------------------------------- public static void ShowCompactMonth( Month month, string caption = "Month" ) { WriteLine( "{0}: {1}", caption, month ); }
// ---------------------------------------------------------------------- public DateTime? GetDayOfLastQuarterMonth( DayOfWeek dayOfWeek, int count ) { Quarter quarter = new Quarter(); Month lastMonthOfQuarter = new Month( quarter.End.Date ); DateTime? searchDay = null; foreach ( Day day in lastMonthOfQuarter.GetDays() ) { if ( day.DayOfWeek == dayOfWeek ) { count--; if ( count == 0 ) { searchDay = day.Start.Date; break; } } } return searchDay; }
public void CurrentMonthTest() { DateTime now = ClockProxy.Clock.Now; CultureTestData cultures = new CultureTestData(); foreach ( CultureInfo culture in cultures ) { DateTime currentYearMonthStart = new DateTime( now.Year, now.Month, 1 ); DateTime currentYearMonthEnd = currentYearMonthStart.AddDays( culture.Calendar.GetDaysInMonth( currentYearMonthStart.Year, currentYearMonthStart.Month ) ); Month month = new Month( currentYearMonthStart, TimeCalendar.New( culture, TimeSpan.Zero, TimeSpan.Zero ) ); Assert.AreEqual( month.Year, now.Year ); Assert.AreEqual( month.YearMonth, (YearMonth)now.Month ); Assert.AreEqual( month.Start, currentYearMonthStart ); Assert.AreEqual( month.End, currentYearMonthEnd ); } }
public void GetDaysTest() { Month month = new Month(); ITimePeriodCollection days = month.GetDays(); Assert.AreNotEqual( days, null ); int index = 0; foreach ( Day day in days ) { Assert.AreEqual( day.Start, month.Start.AddDays( index ) ); Assert.AreEqual( day.End, day.Calendar.MapEnd( day.Start.AddDays( 1 ) ) ); index++; } }
public void DefaultCalendarTest() { DateTime yearStart = new DateTime( ClockProxy.Clock.Now.Year, 1, 1 ); foreach ( YearMonth yearMonth in Enum.GetValues( typeof( YearMonth ) ) ) { int offset = (int)yearMonth - 1; Month month = new Month( yearStart.AddMonths( offset ) ); Assert.AreEqual( month.Year, yearStart.Year ); Assert.AreEqual( month.YearMonth, yearMonth ); Assert.AreEqual( month.Start, yearStart.AddMonths( offset ).Add( month.Calendar.StartOffset ) ); Assert.AreEqual( month.End, yearStart.AddMonths( offset + 1 ).Add( month.Calendar.EndOffset ) ); } }
public void GetNextMonthTest() { Month month = new Month(); Assert.AreEqual( month.GetNextMonth(), month.AddMonths( 1 ) ); }
// ---------------------------------------------------------------------- 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; } }
// ---------------------------------------------------------------------- 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; } }