/// <summary>确定指定纪元中的指定年份是否为闰年。</summary> /// <returns>如果指定的年是闰年,则为 true;否则为 false。</returns> /// <param name="year">1 到 9378 之间的一个整数,用于表示年。</param> /// <param name="era">整数 0 或 1,用于表示纪元。</param> /// <exception cref="T:System.ArgumentOutOfRangeException"> /// <paramref name="year" /> 或 <paramref name="era" /> 超出了此日历支持的范围。</exception> public override bool IsLeapYear(int year, int era) { PersianCalendar.CheckYearRange(year, era); if (year == 9378) { return(false); } return(this.GetAbsoluteDatePersian(year + 1, 1, 1) - this.GetAbsoluteDatePersian(year, 1, 1) == 366L); }
/// <summary>返回指定纪元中指定年份的天数。</summary> /// <returns>指定纪元年份中的天数。天数在平年中为 365,在闰年中为 366。</returns> /// <param name="year">1 到 9378 之间的一个整数,用于表示年。</param> /// <param name="era">整数 0 或 1,用于表示纪元。</param> /// <exception cref="T:System.ArgumentOutOfRangeException"> /// <paramref name="year" /> 或 <paramref name="era" /> 超出了此日历支持的范围。</exception> public override int GetDaysInYear(int year, int era) { PersianCalendar.CheckYearRange(year, era); if (year == 9378) { return(PersianCalendar.DaysToMonth[9] + 13); } return(!this.IsLeapYear(year, 0) ? 365 : 366); }
internal static void CheckYearMonthRange(int year, int month, int era) { PersianCalendar.CheckYearRange(year, era); if (year == 9378 && month > 10) { throw new ArgumentOutOfRangeException("month", string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), (object)1, (object)10)); } if (month < 1 || month > 12) { throw new ArgumentOutOfRangeException("month", Environment.GetResourceString("ArgumentOutOfRange_Month")); } }
/// <summary>返回指定纪元年份的闰月。</summary> /// <returns>返回值始终为 0。</returns> /// <param name="year">1 到 9378 之间的一个整数,用于表示要转换的年份。</param> /// <param name="era">整数 0 或 1,用于表示纪元。</param> /// <exception cref="T:System.ArgumentOutOfRangeException"> /// <paramref name="year" /> 或 <paramref name="era" /> 超出了此日历支持的范围。</exception> public override int GetLeapMonth(int year, int era) { PersianCalendar.CheckYearRange(year, era); return(0); }
/// <summary>返回指定纪元中指定年份中的月数。</summary> /// <returns>如果 <paramref name="year" /> 参数为 9378,则返回 10;否则始终返回 12。</returns> /// <param name="year">1 到 9378 之间的一个整数,用于表示年。</param> /// <param name="era">整数 0 或 1,用于表示纪元。</param> /// <exception cref="T:System.ArgumentOutOfRangeException"> /// <paramref name="year" /> 或 <paramref name="era" /> 超出了此日历支持的范围。</exception> public override int GetMonthsInYear(int year, int era) { PersianCalendar.CheckYearRange(year, era); return(year == 9378 ? 10 : 12); }