// ---------------------------------------------------------------------- protected HalfyearTimeRange( int startYear, YearHalfyear startHalfyear, int halfyearCount, ITimeCalendar calendar ) : base(GetPeriodOf( calendar.YearBaseMonth, startYear, startHalfyear, halfyearCount ), calendar) { this.startYear = startYear; this.startHalfyear = startHalfyear; this.halfyearCount = halfyearCount; TimeTool.AddHalfyear( startYear, startHalfyear, halfyearCount - 1, out endYear, out endHalfyear ); }
// ---------------------------------------------------------------------- public static void AddHalfyear( int startYear, YearHalfyear startHalfyear, int count, out int year, out YearHalfyear halfyear ) { int offsetYear = ( Math.Abs( count ) / TimeSpec.HalfyearsPerYear ) + 1; int startHalfyearCount = ( ( startYear + offsetYear ) * TimeSpec.HalfyearsPerYear ) + ( (int)startHalfyear - 1 ); int targetHalfyearCount = startHalfyearCount + count; year = ( targetHalfyearCount / TimeSpec.HalfyearsPerYear ) - offsetYear; halfyear = (YearHalfyear)( ( targetHalfyearCount % TimeSpec.HalfyearsPerYear ) + 1 ); }
// ---------------------------------------------------------------------- public static TimeSpan Halfyear( Calendar calendar, int year, YearHalfyear yearHalfyear ) { YearMonth[] halfyearMonths = TimeTool.GetMonthsOfHalfyear( yearHalfyear ); TimeSpan duration = TimeSpec.NoDuration; foreach ( YearMonth halfyearMonth in halfyearMonths ) { duration = duration.Add( Month( calendar, year, halfyearMonth ) ); } return duration; }
} // ComputeHashCode // ---------------------------------------------------------------------- private static TimeRange GetPeriodOf(YearMonth yearMonth, int startYear, YearHalfyear startHalfyear, int halfyearCount) { if (halfyearCount < 1) { throw new ArgumentOutOfRangeException("halfyearCount"); } DateTime yearStart = new DateTime(startYear, (int)yearMonth, 1); DateTime start = yearStart.AddMonths(((int)startHalfyear - 1) * TimeSpec.MonthsPerHalfyear); DateTime end = start.AddMonths(halfyearCount * TimeSpec.MonthsPerHalfyear); return(new TimeRange(start, end)); } // GetPeriodOf
public static DateTime Halfyear(YearMonth yearStartMonth) { DateTime now = ClockProxy.Clock.Now; int year = now.Year; if (now.Month - (int)yearStartMonth < 0) { year--; } YearHalfyear halfyear = TimeTool.GetHalfyearOfMonth(yearStartMonth, (YearMonth)now.Month); int months = ((int)halfyear - 1) * TimeSpec.MonthsPerHalfyear; return(new DateTime(year, (int)yearStartMonth, 1).AddMonths(months)); }
private static TimeRange GetPeriodOf(ITimeCalendar calendar, int startYear, YearHalfyear startHalfyear, int halfyearCount) { if (halfyearCount < 1) { throw new ArgumentOutOfRangeException("halfyearCount"); } DateTime start = GetStartOfHalfyear(calendar, startYear, startHalfyear); int endYear; YearHalfyear endHalfyear; TimeTool.AddHalfyear(startYear, startHalfyear, halfyearCount, out endYear, out endHalfyear); DateTime end = GetStartOfHalfyear(calendar, endYear, endHalfyear); return(new TimeRange(start, end)); }
public void SingleHalfyearsTest() { const int startYear = 2004; const YearHalfyear startHalfyear = YearHalfyear.Second; Halfyears halfyears = new Halfyears(startYear, startHalfyear, 1); Assert.Equal(YearMonth.January, halfyears.YearBaseMonth); Assert.Equal(1, halfyears.HalfyearCount); Assert.Equal(halfyears.StartHalfyear, startHalfyear); Assert.Equal <int>(halfyears.StartYear, startYear); Assert.Equal <int>(halfyears.EndYear, startYear); Assert.Equal(YearHalfyear.Second, halfyears.EndHalfyear); Assert.Equal(1, halfyears.GetHalfyears().Count); Assert.True(halfyears.GetHalfyears()[0].IsSamePeriod(new Halfyear(2004, YearHalfyear.Second))); } // SingleHalfyearsTest
} // GetHalfyearName // ---------------------------------------------------------------------- public virtual string GetHalfyearOfYearName(int year, YearHalfyear yearHalfyear) { switch (YearType) { case YearType.CalendarYear: return(Strings.CalendarHalfyearOfYearName(yearHalfyear, year)); case YearType.FiscalYear: return(Strings.FiscalHalfyearOfYearName(yearHalfyear, year)); case YearType.SchoolYear: return(Strings.SchoolHalfyearOfYearName(yearHalfyear, year)); default: return(Strings.SystemHalfyearOfYearName(yearHalfyear, year)); } } // GetHalfyearOfYearName
// ---------------------------------------------------------------------- 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(); } // ShowAll
// ---------------------------------------------------------------------- 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(); }
public void FirstCalendarHalfyearsTest() { const int startYear = 2004; const YearHalfyear startHalfyear = YearHalfyear.First; const int halfyearCount = 3; Halfyears halfyears = new Halfyears(startYear, startHalfyear, halfyearCount); Assert.AreEqual(halfyears.YearBaseMonth, YearMonth.January); Assert.AreEqual(halfyears.HalfyearCount, halfyearCount); Assert.AreEqual(halfyears.StartHalfyear, startHalfyear); Assert.AreEqual(halfyears.StartYear, startYear); Assert.AreEqual(halfyears.EndYear, 2005); Assert.AreEqual(halfyears.EndHalfyear, YearHalfyear.First); Assert.AreEqual(halfyears.GetHalfyears().Count, halfyearCount); Assert.IsTrue(halfyears.GetHalfyears()[0].IsSamePeriod(new Halfyear(2004, YearHalfyear.First))); Assert.IsTrue(halfyears.GetHalfyears()[1].IsSamePeriod(new Halfyear(2004, YearHalfyear.Second))); Assert.IsTrue(halfyears.GetHalfyears()[2].IsSamePeriod(new Halfyear(2005, YearHalfyear.First))); } // FirstCalendarHalfyearsTest
public void SecondCalendarHalfyearsTest() { const int startYear = 2004; const YearHalfyear startHalfyear = YearHalfyear.Second; const int halfyearCount = 3; Halfyears halfyears = new Halfyears(startYear, startHalfyear, halfyearCount); Assert.Equal(YearMonth.January, halfyears.YearBaseMonth); Assert.Equal <int>(halfyears.HalfyearCount, halfyearCount); Assert.Equal(halfyears.StartHalfyear, startHalfyear); Assert.Equal <int>(halfyears.StartYear, startYear); Assert.Equal(2005, halfyears.EndYear); Assert.Equal(YearHalfyear.Second, halfyears.EndHalfyear); Assert.Equal(halfyears.GetHalfyears().Count, halfyearCount); Assert.True(halfyears.GetHalfyears()[0].IsSamePeriod(new Halfyear(2004, YearHalfyear.Second))); Assert.True(halfyears.GetHalfyears()[1].IsSamePeriod(new Halfyear(2005, YearHalfyear.First))); Assert.True(halfyears.GetHalfyears()[2].IsSamePeriod(new Halfyear(2005, YearHalfyear.Second))); } // SecondCalendarHalfyearsTest
} // ComputeHashCode // ---------------------------------------------------------------------- private static DateTime GetStartOfHalfyear(ITimeCalendar calendar, int year, YearHalfyear halfyear) { DateTime startOfHalfyear; switch (calendar.YearType) { case YearType.FiscalYear: startOfHalfyear = FiscalCalendarTool.GetStartOfHalfyear(year, halfyear, calendar.YearBaseMonth, calendar.FiscalFirstDayOfYear, calendar.FiscalYearAlignment); break; default: DateTime yearStart = new DateTime(year, (int)calendar.YearBaseMonth, 1); startOfHalfyear = yearStart.AddMonths(((int)halfyear - 1) * TimeSpec.MonthsPerHalfyear); break; } return(startOfHalfyear); } // GetStartOfHalfyear
public void FirstCustomCalendarHalfyearsTest() { TimeCalendar calendar = TimeCalendar.New(YearMonth.October); const int startYear = 2004; const YearHalfyear startHalfyear = YearHalfyear.First; const int halfyearCount = 3; Halfyears halfyears = new Halfyears(startYear, startHalfyear, halfyearCount, calendar); Assert.Equal(YearMonth.October, halfyears.YearBaseMonth); Assert.Equal <int>(halfyears.HalfyearCount, halfyearCount); Assert.Equal(halfyears.StartHalfyear, startHalfyear); Assert.Equal <int>(halfyears.StartYear, startYear); Assert.Equal(2005, halfyears.EndYear); Assert.Equal(YearHalfyear.First, halfyears.EndHalfyear); Assert.Equal(halfyears.GetHalfyears().Count, halfyearCount); Assert.True(halfyears.GetHalfyears()[0].IsSamePeriod(new Halfyear(2004, YearHalfyear.First, calendar))); Assert.True(halfyears.GetHalfyears()[1].IsSamePeriod(new Halfyear(2004, YearHalfyear.Second, calendar))); Assert.True(halfyears.GetHalfyears()[2].IsSamePeriod(new Halfyear(2005, YearHalfyear.First, calendar))); } // FirstCustomCalendarHalfyearsTest
} // 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
// ---------------------------------------------------------------------- public static string CalendarHalfyearName( YearHalfyear yearHalfyear ) { return Format( inst.GetString( "CalendarHalfyearName" ), (int)yearHalfyear ); }
} // PreviousHalfyear // ---------------------------------------------------------------------- public static void AddHalfyear(YearHalfyear startHalfyear, int count, out int year, out YearHalfyear halfyear) { AddHalfyear(0, startHalfyear, count, out year, out halfyear); } // AddHalfyear
} // NextHalfyear // ---------------------------------------------------------------------- public static void PreviousHalfyear(YearHalfyear startHalfyear, out int year, out YearHalfyear halfyear) { AddHalfyear(startHalfyear, -1, out year, out halfyear); } // PreviousHalfyear
} // GetYearOf #endregion #region Halfyear // ---------------------------------------------------------------------- public static void NextHalfyear(YearHalfyear startHalfyear, out int year, out YearHalfyear halfyear) { AddHalfyear(startHalfyear, 1, out year, out halfyear); } // NextHalfyear
} // FiscalHalfyearOfYearName // ---------------------------------------------------------------------- public static string SchoolHalfyearOfYearName(YearHalfyear yearHalfyear, int year) { return(Format(inst.GetString("SchoolHalfyearOfYearName"), (int)yearHalfyear, year)); } // SchoolHalfyearOfYearName
} // CalendarHalfyearOfYearName // ---------------------------------------------------------------------- public static string FiscalHalfyearOfYearName(YearHalfyear yearHalfyear, int year) { return(Format(inst.GetString("FiscalHalfyearOfYearName"), (int)yearHalfyear, year)); } // FiscalHalfyearOfYearName
// ---------------------------------------------------------------------- private static TimeRange GetPeriodOf( YearMonth yearMonth, int startYear, YearHalfyear startHalfyear, int halfyearCount ) { if ( halfyearCount < 1 ) { throw new ArgumentOutOfRangeException( "halfyearCount" ); } DateTime yearStart = new DateTime( startYear, (int)yearMonth, 1 ); DateTime start = yearStart.AddMonths( ( (int)startHalfyear - 1 ) * TimeSpec.MonthsPerHalfyear ); DateTime end = start.AddMonths( halfyearCount * TimeSpec.MonthsPerHalfyear ); return new TimeRange( start, end ); }
// ---------------------------------------------------------------------- public static TimeSpan Halfyear( int year, YearHalfyear yearHalfyear ) { return DateTimeFormatInfo.CurrentInfo == null ? TimeSpan.Zero : Halfyear( DateTimeFormatInfo.CurrentInfo.Calendar, year, yearHalfyear ); }
// ---------------------------------------------------------------------- public static string SchoolHalfyearName( YearHalfyear yearHalfyear ) { return Format( inst.GetString( "SchoolHalfyearName" ), (int)yearHalfyear ); }
// ---------------------------------------------------------------------- public virtual string GetHalfyearOfYearName( int year, YearHalfyear yearHalfyear ) { switch ( YearType ) { case YearType.CalendarYear: return Strings.CalendarHalfyearOfYearName( yearHalfyear, year ); case YearType.FiscalYear: return Strings.FiscalHalfyearOfYearName( yearHalfyear, year ); case YearType.SchoolYear: return Strings.SchoolHalfyearOfYearName( yearHalfyear, year ); default: return Strings.SystemHalfyearOfYearName( yearHalfyear, year ); } }
} // Halfyears // ---------------------------------------------------------------------- public Halfyears(DateTime moment, YearHalfyear startHalfyear, int count, ITimeCalendar calendar) : this(TimeTool.GetYearOf(calendar.YearBaseMonth, calendar.GetYear(moment), calendar.GetMonth(moment)), startHalfyear, count, calendar) { } // Halfyears
// ---------------------------------------------------------------------- public Halfyears(DateTime moment, YearHalfyear startHalfyear, int count) : this(moment, startHalfyear, count, new TimeCalendar()) { } // Halfyears
// ---------------------------------------------------------------------- public static void NextHalfyear( YearHalfyear startHalfyear, out int year, out YearHalfyear halfyear ) { AddHalfyear( startHalfyear, 1, out year, out halfyear ); }
} // AddHalfyear // ---------------------------------------------------------------------- public static void AddHalfyear(int startYear, YearHalfyear startHalfyear, int count, out int year, out YearHalfyear halfyear) { int offsetYear = (Math.Abs(count) / TimeSpec.HalfyearsPerYear) + 1; int startHalfyearCount = ((startYear + offsetYear) * TimeSpec.HalfyearsPerYear) + ((int)startHalfyear - 1); int targetHalfyearCount = startHalfyearCount + count; year = (targetHalfyearCount / TimeSpec.HalfyearsPerYear) - offsetYear; halfyear = (YearHalfyear)((targetHalfyearCount % TimeSpec.HalfyearsPerYear) + 1); } // AddHalfyear
// ---------------------------------------------------------------------- public static void PreviousHalfyear( YearHalfyear startHalfyear, out int year, out YearHalfyear halfyear ) { AddHalfyear( startHalfyear, -1, out year, out halfyear ); }
} // Halfyear // ---------------------------------------------------------------------- public Halfyear(int year, YearHalfyear yearHalfyear) : this(year, yearHalfyear, new TimeCalendar()) { } // Halfyear
// ---------------------------------------------------------------------- public static string SystemHalfyearOfYearName( YearHalfyear yearHalfyear, int year ) { return Format( inst.GetString( "SystemHalfyearOfYearName" ), (int)yearHalfyear, year ); }
// ---------------------------------------------------------------------- public Halfyear( int year, YearHalfyear yearHalfyear ) : this(year, yearHalfyear, new TimeCalendar()) { }
} // Year #endregion #region Halfyear // ---------------------------------------------------------------------- public static TimeSpan Halfyear(int year, YearHalfyear yearHalfyear) { return(DateTimeFormatInfo.CurrentInfo == null ? TimeSpan.Zero : Halfyear(DateTimeFormatInfo.CurrentInfo.Calendar, year, yearHalfyear)); } // Halfyear
} // Halfyear // ---------------------------------------------------------------------- public Halfyear(int year, YearHalfyear yearHalfyear, ITimeCalendar calendar) : base(year, yearHalfyear, 1, calendar) { } // Halfyear
// ---------------------------------------------------------------------- public Halfyears( DateTime moment, YearHalfyear startHalfyear, int count ) : this(moment, startHalfyear, count, new TimeCalendar()) { }
// ---------------------------------------------------------------------- public Halfyears( int startYear, YearHalfyear startHalfyear, int halfyearCount ) : this(startYear, startHalfyear, halfyearCount, new TimeCalendar()) { }
// ---------------------------------------------------------------------- public static YearMonth[] GetMonthsOfHalfyear( YearHalfyear yearHalfyear ) { switch ( yearHalfyear ) { case YearHalfyear.First: return TimeSpec.FirstHalfyearMonths; case YearHalfyear.Second: return TimeSpec.SecondHalfyearMonths; } throw new InvalidOperationException( "invalid year halfyear " + yearHalfyear ); }
} // Halfyears // ---------------------------------------------------------------------- public Halfyears(int startYear, YearHalfyear startHalfyear, int halfyearCount) : this(startYear, startHalfyear, halfyearCount, new TimeCalendar()) { } // Halfyears
// ---------------------------------------------------------------------- public static void AddHalfyear( YearHalfyear startHalfyear, int count, out int year, out YearHalfyear halfyear ) { AddHalfyear( 0, startHalfyear, count, out year, out halfyear ); }
// ---------------------------------------------------------------------- public Halfyear( int year, YearHalfyear yearHalfyear, ITimeCalendar calendar ) : base(year, yearHalfyear, 1, calendar) { }
} // Halfyears // ---------------------------------------------------------------------- public Halfyears(int startYear, YearHalfyear startHalfyear, int halfyearCount, ITimeCalendar calendar) : base(startYear, startHalfyear, halfyearCount, calendar) { } // Halfyears
// ---------------------------------------------------------------------- public Halfyears( DateTime moment, YearHalfyear startHalfyear, int count, ITimeCalendar calendar ) : this(TimeTool.GetYearOf( calendar.YearBaseMonth, calendar.GetYear( moment ), calendar.GetMonth( moment ) ), startHalfyear, count, calendar) { }
} // SchoolYearName #endregion #region Halfyear // ---------------------------------------------------------------------- public static string SystemHalfyearName(YearHalfyear yearHalfyear) { return(Format(inst.GetString("SystemHalfyearName"), (int)yearHalfyear)); } // SystemHalfyearName
// ---------------------------------------------------------------------- public Halfyears( int startYear, YearHalfyear startHalfyear, int halfyearCount, ITimeCalendar calendar ) : base(startYear, startHalfyear, halfyearCount, calendar) { }
} // SystemHalfyearOfYearName // ---------------------------------------------------------------------- public static string CalendarHalfyearOfYearName(YearHalfyear yearHalfyear, int year) { return(Format(inst.GetString("CalendarHalfyearOfYearName"), (int)yearHalfyear, year)); } // CalendarHalfyearOfYearName