Ejemplo n.º 1
0
 internal static void CheckYearMonthRange(int year, int month, int era)
 {
     UmAlQuraCalendar.CheckYearRange(year, era);
     if (month < 1 || month > 12)
     {
         throw new ArgumentOutOfRangeException("month", Environment.GetResourceString("ArgumentOutOfRange_Month"));
     }
 }
Ejemplo n.º 2
0
        /// <summary>计算与指定初始日期相距指定月数的日期。</summary>
        /// <returns>在将 <paramref name="months" /> 参数指定的月数加到 <paramref name="time" /> 参数指定的日期后所得的日期。</returns>
        /// <param name="time">要加上月数的日期。<see cref="T:System.Globalization.UmAlQuraCalendar" /> 类仅支持从 04/30/1900 00.00.00(公历日期)到 11/16/2077 23:59:59(公历日期)的日期。</param>
        /// <param name="months">要添加的正月数或负月数。</param>
        /// <exception cref="T:System.ArgumentException">得到的日期不在 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围内。</exception>
        /// <exception cref="T:System.ArgumentOutOfRangeException">
        /// <paramref name="months" /> 小于 -120,000 或大于 120,000。- 或 -<paramref name="time" /> 超出了此日历支持的范围。</exception>
        public override DateTime AddMonths(DateTime time, int months)
        {
            if (months < -120000 || months > 120000)
            {
                throw new ArgumentOutOfRangeException("months", string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), (object)-120000, (object)120000));
            }
            int datePart1 = this.GetDatePart(time, 0);
            int datePart2 = this.GetDatePart(time, 2);
            int day       = this.GetDatePart(time, 3);
            int num       = datePart2 - 1 + months;
            int month;
            int year;

            if (num >= 0)
            {
                month = num % 12 + 1;
                year  = datePart1 + num / 12;
            }
            else
            {
                month = 12 + (num + 1) % 12;
                year  = datePart1 + (num - 11) / 12;
            }
            if (day > 29)
            {
                int daysInMonth = this.GetDaysInMonth(year, month);
                if (day > daysInMonth)
                {
                    day = daysInMonth;
                }
            }
            UmAlQuraCalendar.CheckYearRange(year, 1);
            DateTime dateTime = new DateTime(UmAlQuraCalendar.GetAbsoluteDateUmAlQura(year, month, day) * 864000000000L + time.Ticks % 864000000000L);

            Calendar.CheckAddResult(dateTime.Ticks, this.MinSupportedDateTime, this.MaxSupportedDateTime);
            return(dateTime);
        }
Ejemplo n.º 3
0
 /// <summary>确定指定纪元中的指定年份是否为闰年。</summary>
 /// <returns>如果指定的年是闰年,则为 true;否则为 false。</returns>
 /// <param name="year">年份。</param>
 /// <param name="era">纪元。指定 UmAlQuraCalendar.Eras[UmAlQuraCalendar.CurrentEra] 或 <see cref="F:System.Globalization.UmAlQuraCalendar.UmAlQuraEra" />。</param>
 /// <exception cref="T:System.ArgumentOutOfRangeException">
 /// <paramref name="year" /> 或 <paramref name="era" /> 超出了 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围。</exception>
 public override bool IsLeapYear(int year, int era)
 {
     UmAlQuraCalendar.CheckYearRange(year, era);
     return(UmAlQuraCalendar.RealGetDaysInYear(year) == 355);
 }
Ejemplo n.º 4
0
 /// <summary>计算指定纪元年份的闰月。</summary>
 /// <returns>总为 0,因为 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类不支持闰月。</returns>
 /// <param name="year">年份。</param>
 /// <param name="era">纪元。指定 UmAlQuraCalendar.Eras[UmAlQuraCalendar.CurrentEra] 或 <see cref="F:System.Globalization.UmAlQuraCalendar.UmAlQuraEra" />。</param>
 /// <exception cref="T:System.ArgumentOutOfRangeException">
 /// <paramref name="year" /> 小于 1318 或大于 1450。- 或 -<paramref name="era" /> 不是 UmAlQuraCalendar.Eras[UmAlQuraCalendar.CurrentEra] 或 <see cref="F:System.Globalization.UmAlQuraCalendar.UmAlQuraEra" />。</exception>
 public override int GetLeapMonth(int year, int era)
 {
     UmAlQuraCalendar.CheckYearRange(year, era);
     return(0);
 }
Ejemplo n.º 5
0
 /// <summary>计算指定纪元的指定年份中的月数。</summary>
 /// <returns>始终为 12。</returns>
 /// <param name="year">年份。</param>
 /// <param name="era">纪元。指定 UmAlQuaraCalendar.Eras[UmAlQuraCalendar.CurrentEra] 或 <see cref="F:System.Globalization.UmAlQuraCalendar.UmAlQuraEra" />。</param>
 /// <exception cref="T:System.ArgumentOutOfRangeException">
 /// <paramref name="year" /> 超出了此日历支持的范围。</exception>
 /// <exception cref="T:System.ArgumentException">
 /// <paramref name="era" /> 超出了此日历支持的范围。</exception>
 public override int GetMonthsInYear(int year, int era)
 {
     UmAlQuraCalendar.CheckYearRange(year, era);
     return(12);
 }
Ejemplo n.º 6
0
 /// <summary>计算指定纪元的指定年份中的天数。</summary>
 /// <returns>指定纪元年份中的天数。天数在平年中为 354,在闰年中为 355。</returns>
 /// <param name="year">年份。</param>
 /// <param name="era">纪元。指定 UmAlQuraCalendar.Eras[UmAlQuraCalendar.CurrentEra] 或 <see cref="F:System.Globalization.UmAlQuraCalendar.UmAlQuraEra" />。</param>
 /// <exception cref="T:System.ArgumentOutOfRangeException">
 /// <paramref name="year" /> 或 <paramref name="era" /> 超出了 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围。</exception>
 public override int GetDaysInYear(int year, int era)
 {
     UmAlQuraCalendar.CheckYearRange(year, era);
     return(UmAlQuraCalendar.RealGetDaysInYear(year));
 }