Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/corlib/System.Globalization/HijriCalendar.cs')
-rw-r--r--mcs/class/corlib/System.Globalization/HijriCalendar.cs870
1 files changed, 0 insertions, 870 deletions
diff --git a/mcs/class/corlib/System.Globalization/HijriCalendar.cs b/mcs/class/corlib/System.Globalization/HijriCalendar.cs
deleted file mode 100644
index 9df3b005a3a..00000000000
--- a/mcs/class/corlib/System.Globalization/HijriCalendar.cs
+++ /dev/null
@@ -1,870 +0,0 @@
-// HijriCalendar.cs
-//
-// (C) Ulrich Kunitz 2002
-//
-
-namespace System.Globalization {
-
-using System;
-using System.IO;
-
-/// <summary>
-/// This is the Hijri calendar which might be called Islamic calendar.
-/// </summary>
-/// <remarks>
-/// <para>The calendar supports only dates in the HijriEra starting with the
-/// epoch.
-/// </para>
-/// <para>
-/// The epoch of the Hijri Calendar might be adjusted by the
-/// <see cref="F:System.Globalization.HijriCalendar.AddHijriDate"/>
-/// property. See the discussion of the
-/// <see cref="F:CalendricalCalculations.HijriCalendar.epoch">
-/// epoch
-/// </see>
-/// of the Hijri calendar.
-/// </para>
-/// <para>The implementation uses the
-/// <see cref="N:CalendricalCalculations"/> namespace.
-/// </para>
-/// </remarks>
-[Serializable]
-public class HijriCalendar : Calendar {
- /// <summary>
- /// Constructor.
- /// </summary>
- public HijriCalendar() {
- M_AbbrEraNames = new string[] {"A.H."};
- M_EraNames = new string[] {"Anno Hegirae"};
- if (M_TwoDigitYearMax == 99)
- M_TwoDigitYearMax = 1451;
- }
-
- /// <summary>
- /// The era number for the Anno Hegirae (A.H.) era.
- /// </summary>
- public static readonly int HijriEra = 1;
-
- /// <summary>
- /// The minimum fixed day number supported by the Hijri calendar.
- /// </summary>
- internal static readonly int M_MinFixed =
- CCHijriCalendar.fixed_from_dmy(1, 1, 1);
- /// <summary>
- /// The maximum fixed day number supported by the Hijri calendar.
- /// </summary>
- internal static readonly int M_MaxFixed =
- CCGregorianCalendar.fixed_from_dmy(31, 12, 9999);
-
- /// <value>Overridden. Gives the eras supported by the Gregorian
- /// calendar as an array of integers.
- /// </value>
- public override int[] Eras {
- get {
- return new int[] { HijriEra };
- }
- }
-
- /// <summary>
- /// Protected field storing the
- /// <see cref="F:AddHijriDate"/>.
- /// </summary>
- internal int M_AddHijriDate = 0;
-
- // TODO: I don't know currently, which sign to use with the parameter.
- /// <value>An integer property representing the adjustment to the epoch
- /// of the Hijri calendar. Not supported by .NET.
- /// </value>
- public virtual int AddHijriDate {
- get {
- return M_AddHijriDate;
- }
- set {
- if (value < -3 && value > 3)
- throw new ArgumentOutOfRangeException(
- "AddHijriDate",
- "Value should be between -3 and 3.");
- M_AddHijriDate = value;
- }
- }
-
- /// <summary>
- /// A protected method checking an
- /// <see cref="F:AddHijriDate"/> adjusted fixed day number.
- /// </summary>
- /// <param name="param">A string giving the name of the parameter
- /// to check.</param>
- /// <param name="rdHijri">An integer giving the AddHijriDate adjusted
- /// fixed day number.
- /// </param>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// Exception is thrown, if the AddHijriDate adjusted fixed day
- /// number is outside the supported range.
- /// </exception>
- internal void M_CheckFixedHijri(string param, int rdHijri) {
- if (rdHijri < M_MinFixed || rdHijri > M_MaxFixed-AddHijriDate) {
- StringWriter sw = new StringWriter();
- int day, month, year;
- CCHijriCalendar.dmy_from_fixed(out day, out month,
- out year, M_MaxFixed-AddHijriDate);
- if (AddHijriDate != 0) {
- sw.Write("This HijriCalendar " +
- "(AddHijriDate {0})" +
- " allows dates from 1. 1. 1 to " +
- "{1}. {2}. {3}.",
- AddHijriDate,
- day, month, year);
- } else {
- sw.Write("HijriCalendar allows dates from " +
- "1.1.1 to {0}.{1}.{2}.",
- day, month, year);
- }
- throw new ArgumentOutOfRangeException(param,
- sw.ToString());
- }
- }
-
- /// <summary>
- /// A protected member checking a
- /// <see cref="T:System.DateTime"/> value.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/>
- /// to check.
- /// </param>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the supported
- /// range of the Hijri calendar.
- /// </exception>
- internal void M_CheckDateTime(DateTime time) {
- int rd = CCFixed.FromDateTime(time) - AddHijriDate;
- M_CheckFixedHijri("time", rd);
- }
-
- /// <summary>
- /// Protected member which computes the
- /// <see cref="F:AddHijriDate"/>
- /// adjusted fixed day number from a
- /// <see cref="T:System.DateTime"/>.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/>
- /// to convert.
- /// </param>
- /// <returns>The
- /// <see cref="F:AddHijriDate"/> adjusted fixed day number.
- /// </returns>
- internal int M_FromDateTime(DateTime time) {
- return CCFixed.FromDateTime(time) - AddHijriDate;
- }
-
- /// <summary>
- /// Protected member which converts the
- /// <see cref="F:AddHijriDate"/>
- /// adjusted fixed day number the a
- /// <see cref="T:System.DateTime"/> value.
- /// </summary>
- /// <param name="rd">The
- /// <see cref="F:AddHijriDate"/> adjusted fixed day number.
- /// </param>
- /// <returns>The converted
- /// <see cref="T:System.DateTime"/> value.
- /// </returns>
- internal DateTime M_ToDateTime(int rd) {
- return CCFixed.ToDateTime(rd+AddHijriDate);
- }
-
- /// <summary>
- /// Protected member which converts the
- /// <see cref="F:AddHijriDate"/>
- /// adjusted fixed day number the a
- /// <see cref="T:System.DateTime"/> value using a number
- /// of time parameters.
- /// </summary>
- /// <param name="date">The
- /// <see cref="F:AddHijriDate"/> adjusted fixed day number.
- /// </param>
- /// <param name="hour">An integer that specifies the hour.
- /// </param>
- /// <param name="minute">An integer that specifies the minute.
- /// </param>
- /// <param name="second">An integer that gives the second.
- /// </param>
- /// <param name="milliseconds">An integer that gives the
- /// milliseconds.
- /// </param>
- /// <returns>The converted
- /// <see cref="T:System.DateTime"/> value.
- /// </returns>
- internal DateTime M_ToDateTime(int date,
- int hour, int minute, int second, int milliseconds)
- {
- return CCFixed.ToDateTime(date+AddHijriDate,
- hour, minute, second, milliseconds);
- }
-
- /// <summary>
- /// A protected method checking the era number.
- /// </summary>
- /// <param name="era">The era number.</param>
- /// <exception name="T:System.ArgumentException">
- /// The exception is thrown if the era is not equal
- /// <see cref="F:HijriEra"/>.
- /// </exception>
- internal void M_CheckEra(ref int era) {
- if (era == CurrentEra)
- era = HijriEra;
- if (era != HijriEra)
- throw new ArgumentException("Era value was not valid.");
- }
-
- /// <summary>
- /// A protected method checking calendar year and the era number.
- /// </summary>
- /// <param name="year">An integer representing the calendar year.
- /// </param>
- /// <param name="era">The era number.</param>
- /// <exception cref="T:System.ArgumentException">
- /// The exception is thrown if the era is not equal
- /// <see cref="F:HijriEra"/>.
- /// </exception>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the calendar year is outside of
- /// the allowed range.
- /// </exception>
- internal override void M_CheckYE(int year, ref int era) {
- M_CheckEra(ref era);
- M_ArgumentInRange("year", year, 1, 9666);
- }
-
- /// <summary>
- /// A protected method checking the calendar year, month, and
- /// era number.
- /// </summary>
- /// <param name="year">An integer representing the calendar year.
- /// </param>
- /// <param name="month">An integer giving the calendar month.
- /// </param>
- /// <param name="era">The era number.</param>
- /// <exception cref="T:System.ArgumentException">
- /// The exception is thrown if the era is not equal
- /// <see cref="F:HijriEra"/>.
- /// </exception>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the calendar year or month is
- /// outside of the allowed range.
- /// </exception>
- internal void M_CheckYME(int year, int month, ref int era) {
- M_CheckYE(year, ref era);
- if (month < 1 || month > 12)
- throw new ArgumentOutOfRangeException("month",
- "Month must be between one and twelve.");
- if (year == 9666) {
- int rd = CCHijriCalendar.fixed_from_dmy(1, month, year);
- M_CheckFixedHijri("month", rd);
- }
- }
-
- /// <summary>
- /// A protected method checking the calendar day, month, and year
- /// and the era number.
- /// </summary>
- /// <param name="year">An integer representing the calendar year.
- /// </param>
- /// <param name="month">An integer giving the calendar month.
- /// </param>
- /// <param name="day">An integer giving the calendar day.
- /// </param>
- /// <param name="era">The era number.</param>
- /// <exception cref="T:System.ArgumentException">
- /// The exception is thrown if the era is not equal
- /// <see cref="F:HijriEra"/>.
- /// </exception>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the calendar year, month, or day is
- /// outside of the allowed range.
- /// </exception>
- internal void M_CheckYMDE(int year, int month, int day, ref int era)
- {
- M_CheckYME(year, month, ref era);
- M_ArgumentInRange("day", day, 1,
- GetDaysInMonth(year, month, HijriEra));
- if (year == 9666) {
- int rd = CCHijriCalendar.fixed_from_dmy(day, month,
- year);
- M_CheckFixedHijri("day", rd);
- }
- }
-
- /// <summary>
- /// Overridden. Adds days to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// days.
- /// </param>
- /// <param name="days">The number of days to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="days"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddDays(DateTime time, int days) {
- DateTime t = base.AddDays(time, days);
- M_CheckDateTime(t);
- return t;
- }
-
- /// <summary>
- /// Overridden. Adds hours to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// hours.
- /// </param>
- /// <param name="hours">The number of hours to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="hours"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddHours(DateTime time, int hours) {
- DateTime t = base.AddHours(time, hours);
- M_CheckDateTime(t);
- return t;
- }
-
- /// <summary>
- /// Overridden. Adds milliseconds to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// milliseconds.
- /// </param>
- /// <param name="milliseconds">The number of milliseconds given as
- /// double to add. Keep in mind the 100 nanosecond resolution of
- /// <see cref="T:System.DateTime"/>.
- /// </param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="milliseconds"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddMilliseconds(DateTime time,
- double milliseconds)
- {
- DateTime t = base.AddMilliseconds(time, milliseconds);
- M_CheckDateTime(t);
- return t;
- }
-
- /// <summary>
- /// Overridden. Adds minutes to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// minutes.
- /// </param>
- /// <param name="minutes">The number of minutes to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="minutes"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddMinutes(DateTime time, int minutes) {
- DateTime t = base.AddMinutes(time, minutes);
- M_CheckDateTime(t);
- return t;
- }
-
- /// <summary>
- /// Overridden. Adds seconds to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// seconds.
- /// </param>
- /// <param name="seconds">The number of seconds to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="seconds"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddSeconds(DateTime time, int seconds) {
- DateTime t = base.AddSeconds(time, seconds);
- M_CheckDateTime(t);
- return t;
- }
-
- /// <summary>
- /// Overridden. Adds weeks to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// weeks.
- /// </param>
- /// <param name="weeks">The number of weeks to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="weeks"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddWeeks(DateTime time, int weeks) {
- DateTime t = base.AddWeeks(time, weeks);
- M_CheckDateTime(t);
- return t;
- }
-
- /// <summary>
- /// Overridden. Gives the hour of the specified time.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies the
- /// time.
- /// </param>
- /// <returns>An integer that gives the hour of the specified time,
- /// starting with 0.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetHour(DateTime time) {
- M_CheckDateTime(time);
- return base.GetHour(time);
- }
-
- /// <summary>
- /// Overridden. Gives the milliseconds in the current second
- /// of the specified time.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies the
- /// time.
- /// </param>
- /// <returns>An integer that gives the milliseconds in the seconds
- /// of the specified time, starting with 0.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override double GetMilliseconds(DateTime time) {
- M_CheckDateTime(time);
- return base.GetMilliseconds(time);
- }
-
- /// <summary>
- /// Overridden. Gives the minute of the specified time.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies the
- /// time.
- /// </param>
- /// <returns>An integer that gives the minute of the specified time,
- /// starting with 0.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetMinute(DateTime time) {
- M_CheckDateTime(time);
- return base.GetMinute(time);
- }
-
- /// <summary>
- /// Overridden. Gives the second of the specified time.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies the
- /// time.
- /// </param>
- /// <returns>An integer that gives the second of the specified time,
- /// starting with 0.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetSecond(DateTime time) {
- M_CheckDateTime(time);
- return base.GetMinute(time);
- }
-
- /// <summary>
- /// Overrideden. Adds months to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// months.
- /// </param>
- /// <param name="months">The number of months to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="months"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddMonths(DateTime time, int months) {
- int rd = M_FromDateTime(time);
- int day, month, year;
- CCHijriCalendar.dmy_from_fixed(
- out day, out month, out year, rd);
- month += months;
- year += CCMath.div_mod(out month, month, 12);
- rd = CCHijriCalendar.fixed_from_dmy(day, month, year);
- M_CheckFixedHijri("time", rd);
- DateTime t = M_ToDateTime(rd);
- return t.Add(time.TimeOfDay);
- }
-
- /// <summary>
- /// Overrideden. Adds years to a given date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> to which to add
- /// years.
- /// </param>
- /// <param name="years">The number of years to add.</param>
- /// <returns>A new <see cref="T:System.DateTime"/> value, that
- /// results from adding <paramref name="years"/> to the specified
- /// DateTime.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> return value is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DateTime AddYears(DateTime time, int years) {
- int rd = M_FromDateTime(time);
- int day, month, year;
- CCHijriCalendar.dmy_from_fixed(
- out day, out month, out year, rd);
- year += years;
- rd = CCHijriCalendar.fixed_from_dmy(day, month, year);
- M_CheckFixedHijri("time", rd);
- DateTime t = M_ToDateTime(rd);
- return t.Add(time.TimeOfDay);
- }
-
- /// <summary>
- /// Overriden. Gets the day of the month from
- /// <paramref name="time"/>.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies a
- /// date.
- /// </param>
- /// <returns>An integer giving the day of months, starting with 1.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetDayOfMonth(DateTime time) {
- int rd = M_FromDateTime(time);
- M_CheckFixedHijri("time", rd);
- return CCHijriCalendar.day_from_fixed(rd);
- }
-
- /// <summary>
- /// Overriden. Gets the day of the week from the specified date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies a
- /// date.
- /// </param>
- /// <returns>An integer giving the day of months, starting with 1.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override DayOfWeek GetDayOfWeek(DateTime time) {
- int rd = M_FromDateTime(time);
- M_CheckFixedHijri("time", rd);
- return (DayOfWeek)CCFixed.day_of_week(rd);
- }
-
- /// <summary>
- /// Overridden. Gives the number of the day in the year.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies a
- /// date.
- /// </param>
- /// <returns>An integer representing the day of the year,
- /// starting with 1.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetDayOfYear(DateTime time) {
- int rd = M_FromDateTime(time);
- M_CheckFixedHijri("time", rd);
- int year = CCHijriCalendar.year_from_fixed(rd);
- int rd1_1 = CCHijriCalendar.fixed_from_dmy(1, 1, year);
- return rd - rd1_1 + 1;
- }
-
- /// <summary>
- /// Overridden. Gives the number of days in the specified month
- /// of the given year and era.
- /// </summary>
- /// <param name="year">An integer that gives the year.
- /// </param>
- /// <param name="month">An integer that gives the month, starting
- /// with 1.</param>
- /// <param name="era">An intger that gives the era of the specified
- /// year.</param>
- /// <returns>An integer that gives the number of days of the
- /// specified month.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown, if <paramref name="month"/>,
- /// <paramref name="year"/> ,or <paramref name="era"/> is outside
- /// the allowed range.
- /// </exception>
- public override int GetDaysInMonth(int year, int month, int era) {
- M_CheckYME(year, month, ref era);
- int rd1 = CCHijriCalendar.fixed_from_dmy(1, month, year);
- int rd2 = CCHijriCalendar.fixed_from_dmy(1, month+1, year);
- return rd2 - rd1;
- }
-
- /// <summary>
- /// Overridden. Gives the number of days of the specified
- /// year of the given era.
- /// </summary>
- /// <param name="year">An integer that specifies the year.
- /// </param>
- /// <param name="era">An ineger that specifies the era.
- /// </param>
- /// <returns>An integer that gives the number of days of the
- /// specified year.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeExceiption">
- /// The exception is thrown, if
- /// <paramref name="year"/> is outside the allowed range.
- /// </exception>
- public override int GetDaysInYear(int year, int era) {
- M_CheckYE(year, ref era);
- int rd1 = CCHijriCalendar.fixed_from_dmy(1, 1, year);
- int rd2 = CCHijriCalendar.fixed_from_dmy(1, 1, year+1);
- return rd2 - rd1;
- }
-
-
- /// <summary>
- /// Overridden. Gives the era of the specified date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies a
- /// date.
- /// </param>
- /// <returns>An integer representing the era of the calendar.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetEra(DateTime time) {
- M_CheckDateTime(time);
- return HijriEra;
- }
-
- /// <summary>
- /// Overridden. Gives the number of the month of the specified
- /// date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies a
- /// date.
- /// </param>
- /// <returns>An integer representing the month,
- /// starting with 1.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetMonth(DateTime time) {
- int rd = M_FromDateTime(time);
- M_CheckFixedHijri("time", rd);
- return CCHijriCalendar.month_from_fixed(rd);
- }
-
- /// <summary>
- /// Overridden. Gives the number of months in the specified year
- /// and era.
- /// </summary>
- /// <param name="year">An integer that specifies the year.
- /// </param>
- /// <param name="era">An integer that specifies the era.
- /// </param>
- /// <returns>An integer that gives the number of the months in the
- /// specified year.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown, if the year or the era are not valid.
- /// </exception>
- public override int GetMonthsInYear(int year, int era) {
- M_CheckYE(year, ref era);
- return 12;
- }
-
- /// <summary>
- /// Overridden. Gives the number of the year of the specified
- /// date.
- /// </summary>
- /// <param name="time">The
- /// <see cref="T:System.DateTime"/> that specifies a
- /// date.
- /// </param>
- /// <returns>An integer representing the year,
- /// starting with 1.</returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown if the
- /// <see cref="T:System.DateTime"/> parameter is not in the
- /// supported range of the Hijri calendar.
- /// </exception>
- public override int GetYear(DateTime time) {
- int rd = M_FromDateTime(time);
- M_CheckFixedHijri("time", rd);
- return CCHijriCalendar.year_from_fixed(rd);
- }
-
- /// <summary>
- /// Overridden. Tells whether the given day
- /// is a leap day.
- /// </summary>
- /// <param name="year">An integer that specifies the year in the
- /// given era.
- /// </param>
- /// <param name="month">An integer that specifies the month.
- /// </param>
- /// <param name="day">An integer that specifies the day.
- /// </param>
- /// <param name="era">An integer that specifies the era.
- /// </param>
- /// <returns>A boolean that tells whether the given day is a leap
- /// day.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown, if the year, month, day, or era is not
- /// valid.
- /// </exception>
- public override bool IsLeapDay(int year, int month, int day, int era)
- {
- M_CheckYMDE(year, month, day, ref era);
- return IsLeapYear(year) && month == 12 && day == 30;
- }
-
- /// <summary>
- /// Overridden. Tells whether the given month
- /// is a leap month.
- /// </summary>
- /// <param name="year">An integer that specifies the year in the
- /// given era.
- /// </param>
- /// <param name="month">An integer that specifies the month.
- /// </param>
- /// <param name="era">An integer that specifies the era.
- /// </param>
- /// <returns>A boolean that tells whether the given month is a leap
- /// month.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown, if the year, month, or era is not
- /// valid.
- /// </exception>
- public override bool IsLeapMonth(int year, int month, int era) {
- M_CheckYME(year, month, ref era);
- return false;
- }
-
- /// <summary>
- /// Overridden. Tells whether the given year
- /// is a leap year.
- /// </summary>
- /// <param name="year">An integer that specifies the year in the
- /// given era.
- /// </param>
- /// <param name="era">An integer that specifies the era.
- /// </param>
- /// <returns>A boolean that tells whether the given year is a leap
- /// year.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown, if the year or era is not
- /// valid.
- /// </exception>
- public override bool IsLeapYear(int year, int era) {
- M_CheckYE(year, ref era);
- return CCHijriCalendar.is_leap_year(year);
- }
-
- /// <summary>
- /// Overridden. Creates the
- /// <see cref="T:System.DateTime"/> from the parameters.
- /// </summary>
- /// <param name="year">An integer that gives the year in the
- /// <paramref name="era"/>.
- /// </param>
- /// <param name="month">An integer that specifies the month.
- /// </param>
- /// <param name="day">An integer that specifies the day.
- /// </param>
- /// <param name="hour">An integer that specifies the hour.
- /// </param>
- /// <param name="minute">An integer that specifies the minute.
- /// </param>
- /// <param name="second">An integer that gives the second.
- /// </param>
- /// <param name="milliseconds">An integer that gives the
- /// milliseconds.
- /// </param>
- /// <param name="era">An integer that specifies the era.
- /// </param>
- /// <returns>A
- /// <see cref="T:system.DateTime"/> representig the date and time.
- /// </returns>
- /// <exception cref="T:System.ArgumentOutOfRangeException">
- /// The exception is thrown, if at least one of the parameters
- /// is out of range.
- /// </exception>
- public override DateTime ToDateTime(int year, int month, int day,
- int hour, int minute, int second, int milliseconds,
- int era)
- {
- M_CheckYMDE(year, month, day, ref era);
- M_CheckHMSM(hour, minute, second, milliseconds);
- int rd = CCHijriCalendar.fixed_from_dmy(day, month, year);
- return M_ToDateTime(rd,
- hour, minute, second, milliseconds);
- }
-} // class HijriCalendar
-
-} // namespace System.Globalization