Example #1
0
        /// <summary>确定指定的日期是否为闰日。</summary>
        /// <returns>如果指定的日期是闰日,则为 true;否则为 false。返回值始终为 false 因为 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类不支持闰日。</returns>
        /// <param name="year">年份。</param>
        /// <param name="month">1 到 12 之间的一个整数,用于表示月。</param>
        /// <param name="day">1 到 30 之间的一个整数,用于表示日。</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="month" />、<paramref name="day" /> 或 <paramref name="era" /> 超出了 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围。</exception>
        public override bool IsLeapDay(int year, int month, int day, int era)
        {
            if (day >= 1 && day <= 29)
            {
                UmAlQuraCalendar.CheckYearMonthRange(year, month, era);
                return(false);
            }
            int daysInMonth = this.GetDaysInMonth(year, month, era);

            if (day < 1 || day > daysInMonth)
            {
                throw new ArgumentOutOfRangeException("day", string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Day"), (object)daysInMonth, (object)month));
            }
            return(false);
        }
Example #2
0
        /// <summary>返回设置为指定的日期、时间和纪元的 <see cref="T:System.DateTime" />。</summary>
        /// <returns>设置为当前纪元中的指定日期和时间的 <see cref="T:System.DateTime" />。</returns>
        /// <param name="year">年份。</param>
        /// <param name="month">1 到 12 之间的一个整数,用于表示月。</param>
        /// <param name="day">1 到 29 之间的一个整数,用于表示日。</param>
        /// <param name="hour">0 到 23 之间的一个整数,用于表示小时。</param>
        /// <param name="minute">0 到 59 之间的一个整数,用于表示分钟。</param>
        /// <param name="second">0 到 59 之间的一个整数,用于表示秒。</param>
        /// <param name="millisecond">0 到 999 之间的一个整数,用于表示毫秒。</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="month" />、<paramref name="day" /> 或 <paramref name="era" /> 超出了 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围。- 或 -<paramref name="hour" /> 小于零或大于 23。- 或 -<paramref name="minute" /> 小于零或大于 59。- 或 -<paramref name="second" /> 小于零或大于 59。- 或 -<paramref name="millisecond" /> 小于零或大于 999。</exception>
        public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
        {
            if (day >= 1 && day <= 29)
            {
                UmAlQuraCalendar.CheckYearMonthRange(year, month, era);
            }
            else
            {
                int daysInMonth = this.GetDaysInMonth(year, month, era);
                if (day < 1 || day > daysInMonth)
                {
                    throw new ArgumentOutOfRangeException("day", string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Day"), (object)daysInMonth, (object)month));
                }
            }
            long absoluteDateUmAlQura = UmAlQuraCalendar.GetAbsoluteDateUmAlQura(year, month, day);

            if (absoluteDateUmAlQura >= 0L)
            {
                return(new DateTime(absoluteDateUmAlQura * 864000000000L + Calendar.TimeToTicks(hour, minute, second, millisecond)));
            }
            throw new ArgumentOutOfRangeException((string)null, Environment.GetResourceString("ArgumentOutOfRange_BadYearMonthDay"));
        }
Example #3
0
 /// <summary>确定指定纪元年份中的指定月份是否为闰月。</summary>
 /// <returns>总为 false,因为 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类不支持闰月。</returns>
 /// <param name="year">年份。</param>
 /// <param name="month">1 到 12 之间的一个整数,用于表示月。</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="month" /> 或 <paramref name="era" /> 超出了 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围。</exception>
 public override bool IsLeapMonth(int year, int month, int era)
 {
     UmAlQuraCalendar.CheckYearMonthRange(year, month, era);
     return(false);
 }
Example #4
0
 /// <summary>计算指定纪元年份的指定月份中的天数。</summary>
 /// <returns>指定纪元年份中指定月份的天数。返回值是 29(在平年中)或 30(在闰年中)。</returns>
 /// <param name="year">年份。</param>
 /// <param name="month">1 到 12 之间的一个整数,用于表示月。</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="month" /> 或 <paramref name="era" /> 超出了 <see cref="T:System.Globalization.UmAlQuraCalendar" /> 类支持的范围。</exception>
 public override int GetDaysInMonth(int year, int month, int era)
 {
     UmAlQuraCalendar.CheckYearMonthRange(year, month, era);
     return((UmAlQuraCalendar.HijriYearInfo[year - 1318].HijriMonthsLengthFlags & 1 << month - 1) == 0 ? 29 : 30);
 }