/// <summary> /// Determines if the specified <paramref name="year"/> is a valid year value. /// </summary> /// <param name="year">The year value.</param> /// <param name="cal">The calendar to use.</param> /// <param name="era">The era the year belongs to.</param> /// <returns>true if it's a valid year value; false otherwise.</returns> private static bool IsValidYear(int year, Calendar cal, int era) { int minYear = cal.GetYear(cal.MinSupportedDateTime.Date); int maxYear = cal.GetYear(cal.MaxSupportedDateTime.Date); if (cal.Eras.Length > 1) { DateTime? minDate = null, maxDate = null; DateTime date = cal.MinSupportedDateTime; while (date < cal.MaxSupportedDateTime.Date) { int e = cal.GetEra(date); if (e == era) { if (minDate == null) { minDate = date; } maxDate = date; } date = cal.AddDays(date, 1); } minYear = cal.GetYear(minDate.GetValueOrDefault(cal.MinSupportedDateTime.Date)); maxYear = cal.GetYear(maxDate.GetValueOrDefault(cal.MaxSupportedDateTime.Date)); } year = cal.ToFourDigitYear(year); return year >= minYear && year <= maxYear; }
/// <summary> /// Determines if the specified <paramref name="month"/> is a valid month value. /// </summary> /// <param name="month">The month value.</param> /// <param name="year">The year value.</param> /// <param name="cal">The calendar to use.</param> /// <returns>true if it's a valid month value; false otherwise.</returns> private static bool IsValidMonth(int month, int year, Calendar cal) { year = cal.ToFourDigitYear(year); return month >= 1 && month <= cal.GetMonthsInYear(year); }