| java.lang.Object com.ibm.icu.util.Calendar com.ibm.icu.util.IslamicCalendar
IslamicCalendar | public class IslamicCalendar extends Calendar (Code) | | IslamicCalendar is a subclass of Calendar
that that implements the Islamic civil and religious calendars. It
is used as the civil calendar in most of the Arab world and the
liturgical calendar of the Islamic faith worldwide. This calendar
is also known as the "Hijri" calendar, since it starts at the time
of Mohammed's emigration (or "hijra") to Medinah on Thursday,
July 15, 622 AD (Julian).
The Islamic calendar is strictly lunar, and thus an Islamic year of twelve
lunar months does not correspond to the solar year used by most other
calendar systems, including the Gregorian. An Islamic year is, on average,
about 354 days long, so each successive Islamic year starts about 11 days
earlier in the corresponding Gregorian year.
Each month of the calendar starts when the new moon's crescent is visible
at sunset. However, in order to keep the time fields in this class
synchronized with those of the other calendars and with local clock time,
we treat days and months as beginning at midnight,
roughly 6 hours after the corresponding sunset.
There are two main variants of the Islamic calendar in existence. The first
is the civil calendar, which uses a fixed cycle of alternating 29-
and 30-day months, with a leap day added to the last month of 11 out of
every 30 years. This calendar is easily calculated and thus predictable in
advance, so it is used as the civil calendar in a number of Arab countries.
This is the default behavior of a newly-created IslamicCalendar
object.
The Islamic religious calendar, however, is based on the observation
of the crescent moon. It is thus affected by the position at which the
observations are made, seasonal variations in the time of sunset, the
eccentricities of the moon's orbit, and even the weather at the observation
site. This makes it impossible to calculate in advance, and it causes the
start of a month in the religious calendar to differ from the civil calendar
by up to three days.
Using astronomical calculations for the position of the sun and moon, the
moon's illumination, and other factors, it is possible to determine the start
of a lunar month with a fairly high degree of certainty. However, these
calculations are extremely complicated and thus slow, so most algorithms,
including the one used here, are only approximations of the true astronical
calculations. At present, the approximations used in this class are fairly
simplistic; they will be improved in later versions of the code.
The
IslamicCalendar.setCivil setCivil method determines
which approach is used to determine the start of a month. By default, the
fixed-cycle civil calendar is used. However, if setCivil(false)
is called, an approximation of the true lunar calendar will be used.
This class should not be subclassed.
IslamicCalendar usually should be instantiated using
com.ibm.icu.util.Calendar.getInstance(ULocale) passing in a ULocale
with the tag "@calendar=islamic" or "@calendar=islamic-civil" .
See Also: com.ibm.icu.util.GregorianCalendar See Also: com.ibm.icu.util.Calendar author: Laura Werner author: Alan Liu |
Field Summary | |
final public static int | DHU_AL_HIJJAH Constant for Dhu al-Hijjah, the 12th month of the Islamic year. | final public static int | DHU_AL_QIDAH Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. | final public static int | JUMADA_1 Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. | final public static int | JUMADA_2 Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. | final public static int | MUHARRAM Constant for Muharram, the 1st month of the Islamic year. | final public static int | RABI_1 Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. | final public static int | RABI_2 Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. | final public static int | RAJAB Constant for Rajab, the 7th month of the Islamic year. | final public static int | RAMADAN Constant for Ramadan, the 9th month of the Islamic year. | final public static int | SAFAR Constant for Safar, the 2nd month of the Islamic year. | final public static int | SHABAN Constant for Sha'ban, the 8th month of the Islamic year. | final public static int | SHAWWAL Constant for Shawwal, the 10th month of the Islamic year. |
Constructor Summary | |
public | IslamicCalendar() Constructs a default IslamicCalendar using the current time
in the default time zone with the default locale. | public | IslamicCalendar(TimeZone zone) Constructs an IslamicCalendar based on the current time
in the given time zone with the default locale. | public | IslamicCalendar(Locale aLocale) Constructs an IslamicCalendar based on the current time
in the default time zone with the given locale. | public | IslamicCalendar(ULocale locale) Constructs an IslamicCalendar based on the current time
in the default time zone with the given locale. | public | IslamicCalendar(TimeZone zone, Locale aLocale) Constructs an IslamicCalendar based on the current time
in the given time zone with the given locale. | public | IslamicCalendar(TimeZone zone, ULocale locale) Constructs an IslamicCalendar based on the current time
in the given time zone with the given locale. | public | IslamicCalendar(Date date) Constructs an IslamicCalendar with the given date set
in the default time zone with the default locale. | public | IslamicCalendar(int year, int month, int date) Constructs an IslamicCalendar with the given date set
in the default time zone with the default locale.
Parameters: year - the value used to set the IslamicCalendar.YEAR YEAR time field in the calendar. Parameters: month - the value used to set the IslamicCalendar.MONTH MONTH time field in the calendar.Note that the month value is 0-based. | public | IslamicCalendar(int year, int month, int date, int hour, int minute, int second) Constructs an IslamicCalendar with the given date
and time set for the default time zone with the default locale.
Parameters: year - the value used to set the IslamicCalendar.YEAR YEAR time field in the calendar. Parameters: month - the value used to set the IslamicCalendar.MONTH MONTH time field in the calendar.Note that the month value is 0-based. |
Method Summary | |
public String | getType() Return the current Calendar type. | protected void | handleComputeFields(int julianDay) Override Calendar to compute several fields specific to the Islamic
calendar system. | protected int | handleComputeMonthStart(int eyear, int month, boolean useMonth) | protected int | handleGetExtendedYear() | protected int | handleGetLimit(int field, int limitType) | protected int | handleGetMonthLength(int extendedYear, int month) Return the length (in days) of the given month. | protected int | handleGetYearLength(int extendedYear) | public boolean | isCivil() Returns true if this object is using the fixed-cycle civil
calendar, or false if using the religious, astronomical
calendar. | final static double | moonAge(long time) Return the "age" of the moon at the given time; this is the difference
in ecliptic latitude between the moon and the sun. | public void | setCivil(boolean beCivil) Determines whether this object uses the fixed-cycle Islamic civil calendar
or an approximation of the religious, astronomical calendar. |
DHU_AL_HIJJAH | final public static int DHU_AL_HIJJAH(Code) | | Constant for Dhu al-Hijjah, the 12th month of the Islamic year.
|
DHU_AL_QIDAH | final public static int DHU_AL_QIDAH(Code) | | Constant for Dhu al-Qi'dah, the 11th month of the Islamic year.
|
JUMADA_1 | final public static int JUMADA_1(Code) | | Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year.
|
JUMADA_2 | final public static int JUMADA_2(Code) | | Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year.
|
MUHARRAM | final public static int MUHARRAM(Code) | | Constant for Muharram, the 1st month of the Islamic year.
|
RABI_1 | final public static int RABI_1(Code) | | Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year.
|
RABI_2 | final public static int RABI_2(Code) | | Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year.
|
RAJAB | final public static int RAJAB(Code) | | Constant for Rajab, the 7th month of the Islamic year.
|
RAMADAN | final public static int RAMADAN(Code) | | Constant for Ramadan, the 9th month of the Islamic year.
|
SAFAR | final public static int SAFAR(Code) | | Constant for Safar, the 2nd month of the Islamic year.
|
SHABAN | final public static int SHABAN(Code) | | Constant for Sha'ban, the 8th month of the Islamic year.
|
SHAWWAL | final public static int SHAWWAL(Code) | | Constant for Shawwal, the 10th month of the Islamic year.
|
IslamicCalendar | public IslamicCalendar()(Code) | | Constructs a default IslamicCalendar using the current time
in the default time zone with the default locale.
|
IslamicCalendar | public IslamicCalendar(TimeZone zone)(Code) | | Constructs an IslamicCalendar based on the current time
in the given time zone with the default locale.
Parameters: zone - the given time zone. |
IslamicCalendar | public IslamicCalendar(Locale aLocale)(Code) | | Constructs an IslamicCalendar based on the current time
in the default time zone with the given locale.
Parameters: aLocale - the given locale. |
IslamicCalendar | public IslamicCalendar(ULocale locale)(Code) | | Constructs an IslamicCalendar based on the current time
in the default time zone with the given locale.
Parameters: locale - the given ulocale. |
IslamicCalendar | public IslamicCalendar(TimeZone zone, Locale aLocale)(Code) | | Constructs an IslamicCalendar based on the current time
in the given time zone with the given locale.
Parameters: zone - the given time zone. Parameters: aLocale - the given locale. |
IslamicCalendar | public IslamicCalendar(TimeZone zone, ULocale locale)(Code) | | Constructs an IslamicCalendar based on the current time
in the given time zone with the given locale.
Parameters: zone - the given time zone. Parameters: locale - the given ulocale. |
IslamicCalendar | public IslamicCalendar(Date date)(Code) | | Constructs an IslamicCalendar with the given date set
in the default time zone with the default locale.
Parameters: date - The date to which the new calendar is set. |
IslamicCalendar | public IslamicCalendar(int year, int month, int date)(Code) | | Constructs an IslamicCalendar with the given date set
in the default time zone with the default locale.
Parameters: year - the value used to set the IslamicCalendar.YEAR YEAR time field in the calendar. Parameters: month - the value used to set the IslamicCalendar.MONTH MONTH time field in the calendar.Note that the month value is 0-based. e.g., 0 for Muharram. Parameters: date - the value used to set the IslamicCalendar.DATE DATE time field in the calendar. |
IslamicCalendar | public IslamicCalendar(int year, int month, int date, int hour, int minute, int second)(Code) | | Constructs an IslamicCalendar with the given date
and time set for the default time zone with the default locale.
Parameters: year - the value used to set the IslamicCalendar.YEAR YEAR time field in the calendar. Parameters: month - the value used to set the IslamicCalendar.MONTH MONTH time field in the calendar.Note that the month value is 0-based. e.g., 0 for Muharram. Parameters: date - the value used to set the IslamicCalendar.DATE DATE time field in the calendar. Parameters: hour - the value used to set the IslamicCalendar.HOUR_OF_DAY HOUR_OF_DAY time fieldin the calendar. Parameters: minute - the value used to set the IslamicCalendar.MINUTE MINUTE time fieldin the calendar. Parameters: second - the value used to set the IslamicCalendar.SECOND SECOND time fieldin the calendar. |
getType | public String getType()(Code) | | Return the current Calendar type.
type of calendar (gregorian, etc.) |
handleComputeFields | protected void handleComputeFields(int julianDay)(Code) | | Override Calendar to compute several fields specific to the Islamic
calendar system. These are:
- ERA
- YEAR
- MONTH
- DAY_OF_MONTH
- DAY_OF_YEAR
- EXTENDED_YEAR
The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
method is called. The getGregorianXxx() methods return Gregorian
calendar equivalents for the given Julian day.
|
handleComputeMonthStart | protected int handleComputeMonthStart(int eyear, int month, boolean useMonth)(Code) | | |
handleGetExtendedYear | protected int handleGetExtendedYear()(Code) | | |
handleGetLimit | protected int handleGetLimit(int field, int limitType)(Code) | | |
handleGetMonthLength | protected int handleGetMonthLength(int extendedYear, int month)(Code) | | Return the length (in days) of the given month.
Parameters: extendedYear - The hijri year Parameters: month - The hijri month, 0-based |
handleGetYearLength | protected int handleGetYearLength(int extendedYear)(Code) | | Return the number of days in the given Islamic year
|
isCivil | public boolean isCivil()(Code) | | Returns true if this object is using the fixed-cycle civil
calendar, or false if using the religious, astronomical
calendar.
|
moonAge | final static double moonAge(long time)(Code) | | Return the "age" of the moon at the given time; this is the difference
in ecliptic latitude between the moon and the sun. This method simply
calls CalendarAstronomer.moonAge, converts to degrees,
and adjusts the resultto be in the range [-180, 180].
Parameters: time - The time at which the moon's age is desired,in millis since 1/1/1970. |
setCivil | public void setCivil(boolean beCivil)(Code) | | Determines whether this object uses the fixed-cycle Islamic civil calendar
or an approximation of the religious, astronomical calendar.
Parameters: beCivil - true to use the civil calendar,false to use the astronomical calendar. |
Methods inherited from com.ibm.icu.util.Calendar | public void add(int field, int amount)(Code)(Java Doc) public boolean after(Object when)(Code)(Java Doc) public boolean before(Object when)(Code)(Java Doc) final public void clear()(Code)(Java Doc) final public void clear(int field)(Code)(Java Doc) public Object clone()(Code)(Java Doc) public int compareTo(Calendar that)(Code)(Java Doc) public int compareTo(Object that)(Code)(Java Doc) protected void complete()(Code)(Java Doc) protected void computeFields()(Code)(Java Doc) final protected void computeGregorianFields(int julianDay)(Code)(Java Doc) protected int computeGregorianMonthStart(int year, int month)(Code)(Java Doc) protected int computeJulianDay()(Code)(Java Doc) protected int computeMillisInDay()(Code)(Java Doc) protected void computeTime()(Code)(Java Doc) protected int computeZoneOffset(long millis, int millisInDay)(Code)(Java Doc) public boolean equals(Object obj)(Code)(Java Doc) public int fieldDifference(Date when, int field)(Code)(Java Doc) protected String fieldName(int field)(Code)(Java Doc) final protected static long floorDivide(long numerator, long denominator)(Code)(Java Doc) final protected static int floorDivide(int numerator, int denominator)(Code)(Java Doc) final protected static int floorDivide(int numerator, int denominator, int[] remainder)(Code)(Java Doc) final protected static int floorDivide(long numerator, int denominator, int[] remainder)(Code)(Java Doc) final public int get(int field)(Code)(Java Doc) public int getActualMaximum(int field)(Code)(Java Doc) public int getActualMinimum(int field)(Code)(Java Doc) public static Locale[] getAvailableLocales()(Code)(Java Doc) public static ULocale[] getAvailableULocales()(Code)(Java Doc) static Set getCalendarFactoryNames()(Code)(Java Doc) public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc)(Code)(Java Doc) public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, ULocale loc)(Code)(Java Doc) public int getDayOfWeekType(int dayOfWeek)(Code)(Java Doc) protected int getDefaultDayInMonth(int extendedYear, int month)(Code)(Java Doc) protected int getDefaultMonthInYear(int extendedYear)(Code)(Java Doc) public String getDisplayName(Locale loc)(Code)(Java Doc) public String getDisplayName(ULocale loc)(Code)(Java Doc) final public int getFieldCount()(Code)(Java Doc) protected int[][][] getFieldResolutionTable()(Code)(Java Doc) public int getFirstDayOfWeek()(Code)(Java Doc) final public int getGreatestMinimum(int field)(Code)(Java Doc) final protected int getGregorianDayOfMonth()(Code)(Java Doc) final protected int getGregorianDayOfYear()(Code)(Java Doc) final protected int getGregorianMonth()(Code)(Java Doc) final protected int getGregorianYear()(Code)(Java Doc) public static synchronized Calendar getInstance()(Code)(Java Doc) public static synchronized Calendar getInstance(TimeZone zone)(Code)(Java Doc) public static synchronized Calendar getInstance(Locale aLocale)(Code)(Java Doc) public static synchronized Calendar getInstance(ULocale locale)(Code)(Java Doc) public static synchronized Calendar getInstance(TimeZone zone, Locale aLocale)(Code)(Java Doc) public static synchronized Calendar getInstance(TimeZone zone, ULocale locale)(Code)(Java Doc) static synchronized Calendar getInstance(TimeZone zone, ULocale locale, String factoryName)(Code)(Java Doc) final public int getLeastMaximum(int field)(Code)(Java Doc) protected int getLimit(int field, int limitType)(Code)(Java Doc) final public ULocale getLocale(ULocale.Type type)(Code)(Java Doc) final public int getMaximum(int field)(Code)(Java Doc) public int getMinimalDaysInFirstWeek()(Code)(Java Doc) final public int getMinimum(int field)(Code)(Java Doc) final protected int getStamp(int field)(Code)(Java Doc) final public Date getTime()(Code)(Java Doc) public long getTimeInMillis()(Code)(Java Doc) public TimeZone getTimeZone()(Code)(Java Doc) public String getType()(Code)(Java Doc) public int getWeekendTransition(int dayOfWeek)(Code)(Java Doc) final protected static int gregorianMonthLength(int y, int m)(Code)(Java Doc) final protected static int gregorianPreviousMonthLength(int y, int m)(Code)(Java Doc) protected void handleComputeFields(int julianDay)(Code)(Java Doc) protected int handleComputeJulianDay(int bestField)(Code)(Java Doc) abstract protected int handleComputeMonthStart(int eyear, int month, boolean useMonth)(Code)(Java Doc) protected int[] handleCreateFields()(Code)(Java Doc) protected DateFormat handleGetDateFormat(String pattern, Locale locale)(Code)(Java Doc) protected DateFormat handleGetDateFormat(String pattern, ULocale locale)(Code)(Java Doc) abstract protected int handleGetExtendedYear()(Code)(Java Doc) abstract protected int handleGetLimit(int field, int limitType)(Code)(Java Doc) protected int handleGetMonthLength(int extendedYear, int month)(Code)(Java Doc) protected int handleGetYearLength(int eyear)(Code)(Java Doc) public int hashCode()(Code)(Java Doc) final protected int internalGet(int field)(Code)(Java Doc) final protected int internalGet(int field, int defaultValue)(Code)(Java Doc) final protected long internalGetTimeInMillis()(Code)(Java Doc) final protected void internalSet(int field, int value)(Code)(Java Doc) public boolean isEquivalentTo(Calendar other)(Code)(Java Doc) final protected static boolean isGregorianLeapYear(int year)(Code)(Java Doc) public boolean isLenient()(Code)(Java Doc) final public boolean isSet(int field)(Code)(Java Doc) public boolean isWeekend(Date date)(Code)(Java Doc) public boolean isWeekend()(Code)(Java Doc) final protected static int julianDayToDayOfWeek(int julian)(Code)(Java Doc) final protected static long julianDayToMillis(int julian)(Code)(Java Doc) final protected static int millisToJulianDay(long millis)(Code)(Java Doc) protected int newerField(int defaultField, int alternateField)(Code)(Java Doc) protected int newestStamp(int first, int last, int bestStampSoFar)(Code)(Java Doc) protected void pinField(int field)(Code)(Java Doc) protected void prepareGetActual(int field, boolean isMinimum)(Code)(Java Doc) static Object register(CalendarFactory factory, ULocale locale)(Code)(Java Doc) static Object register(CalendarFactory factory, ULocale locale, boolean visible)(Code)(Java Doc) protected int resolveFields(int[][][] precedenceTable)(Code)(Java Doc) final public void roll(int field, boolean up)(Code)(Java Doc) public void roll(int field, int amount)(Code)(Java Doc) final public void set(int field, int value)(Code)(Java Doc) final public void set(int year, int month, int date)(Code)(Java Doc) final public void set(int year, int month, int date, int hour, int minute)(Code)(Java Doc) final public void set(int year, int month, int date, int hour, int minute, int second)(Code)(Java Doc) public void setFirstDayOfWeek(int value)(Code)(Java Doc) public void setLenient(boolean lenient)(Code)(Java Doc) final void setLocale(ULocale valid, ULocale actual)(Code)(Java Doc) public void setMinimalDaysInFirstWeek(int value)(Code)(Java Doc) final public void setTime(Date date)(Code)(Java Doc) public void setTimeInMillis(long millis)(Code)(Java Doc) public void setTimeZone(TimeZone value)(Code)(Java Doc) public String toString()(Code)(Java Doc) static boolean unregister(Object registryKey)(Code)(Java Doc) protected void validateField(int field)(Code)(Java Doc) final protected void validateField(int field, int min, int max)(Code)(Java Doc) protected void validateFields()(Code)(Java Doc) protected int weekNumber(int desiredDay, int dayOfPeriod, int dayOfWeek)(Code)(Java Doc) final protected int weekNumber(int dayOfPeriod, int dayOfWeek)(Code)(Java Doc)
|
|
|