Inheritance: MonthTimeRange
コード例 #1
0
ファイル: MonthDemo.cs プロジェクト: jwg4/date-difference
 // ----------------------------------------------------------------------
 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();
 }
コード例 #2
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
        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 );
            }
        }
コード例 #3
0
ファイル: MonthDemo.cs プロジェクト: jwg4/date-difference
        // ----------------------------------------------------------------------
        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();
        }
コード例 #4
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
        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 ) );
        }
コード例 #5
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
        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 ) );
        }
コード例 #6
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
        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 );
        }
コード例 #7
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
 public void GetPreviousMonthTest()
 {
     Month month = new Month();
     Assert.AreEqual( month.GetPreviousMonth(), month.AddMonths( -1 ) );
 }
コード例 #8
0
        // ----------------------------------------------------------------------
        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;
        }
コード例 #9
0
        }         // EnterMonths

        // ----------------------------------------------------------------------
        protected override bool EnterDays(Month month, CalendarPeriodCollectorContext context)
        {
            return
                (context.Scope == CalendarPeriodCollectorContext.CollectType.Hour);
        }         // EnterDays
コード例 #10
0
        } // OnVisitYear

        // ----------------------------------------------------------------------
        protected virtual bool OnVisitMonth(Month month, TContext context)
        {
            return(true);
        } // OnVisitMonth
コード例 #11
0
        } // EnterMonths

        // ----------------------------------------------------------------------
        protected virtual bool EnterDays(Month month, TContext context)
        {
            return(true);
        } // EnterDays
コード例 #12
0
ファイル: MonthDemo.cs プロジェクト: jwg4/date-difference
 // ----------------------------------------------------------------------
 public static void ShowCompactMonth( Month month, string caption = "Month" )
 {
     WriteLine( "{0}: {1}", caption, month );
 }
コード例 #13
0
        // ----------------------------------------------------------------------
        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;
        }
コード例 #14
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
        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 );
            }
        }
コード例 #15
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
        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++;
            }
        }
コード例 #16
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
 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 ) );
     }
 }
コード例 #17
0
ファイル: MonthTest.cs プロジェクト: jwg4/date-difference
 public void GetNextMonthTest()
 {
     Month month = new Month();
     Assert.AreEqual( month.GetNextMonth(), month.AddMonths( 1 ) );
 }
コード例 #18
0
ファイル: MainPage.xaml.cs プロジェクト: jwg4/date-difference
 // ----------------------------------------------------------------------
 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;
     }
 }
コード例 #19
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;
            }
        }