Class IslamicCalendar
- java.lang.Object
-
- com.ibm.icu.util.Calendar
-
- com.ibm.icu.util.IslamicCalendar
-
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<Calendar>
public class IslamicCalendar extends Calendar
IslamicCalendaris a subclass ofCalendarthat 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 three 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
IslamicCalendarobject.The Islamic religious calendar and Saudi Arabia's Umm al-Qura calendar, however, are 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 astronomical calculations. At present, the approximations used in this class are fairly simplistic; they will be improved in later versions of the code.
Like the Islamic religious calendar, Umm al-Qura is also based on the sighting method of the crescent moon but is standardized by Saudi Arabia.
The
setCalculationTypemethod determines which approach is used to determine the start of a month. By default, the fixed-cycle civil calendar is used. However, ifsetCalculationType(ISLAMIC)is called, an approximation of the true lunar calendar will be used. Similarly, ifsetCalculationType(ISLAMIC_UMALQURA)is called, an approximation of the Umm al-Qura lunar calendar will be used.This class should not be subclassed.
IslamicCalendar usually should be instantiated using
Calendar.getInstance(ULocale)passing in aULocalewith the tag"@calendar=islamic"or"@calendar=islamic-civil"or"@calendar=islamic-umalqura".- Author:
- Laura Werner, Alan Liu
- See Also:
GregorianCalendar,Calendar, Serialized Form- Status:
- Stable ICU 2.8.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classIslamicCalendar.CalculationTypeenumeration of available calendar calculation types-
Nested classes/interfaces inherited from class com.ibm.icu.util.Calendar
Calendar.FormatConfiguration, Calendar.WeekData
-
-
Field Summary
Fields Modifier and Type Field Description static intDHU_AL_HIJJAHConstant for Dhu al-Hijjah, the 12th month of the Islamic year.static intDHU_AL_QIDAHConstant for Dhu al-Qi'dah, the 11th month of the Islamic year.static intJUMADA_1Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year.static intJUMADA_2Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year.static intMUHARRAMConstant for Muharram, the 1st month of the Islamic year.static intRABI_1Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year.static intRABI_2Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year.static intRAJABConstant for Rajab, the 7th month of the Islamic year.static intRAMADANConstant for Ramadan, the 9th month of the Islamic year.static intSAFARConstant for Safar, the 2nd month of the Islamic year.static intSHABANConstant for Sha'ban, the 8th month of the Islamic year.static intSHAWWALConstant for Shawwal, the 10th month of the Islamic year.-
Fields inherited from class com.ibm.icu.util.Calendar
AM, AM_PM, APRIL, AUGUST, BASE_FIELD_COUNT, DATE, DAY_OF_MONTH, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, DECEMBER, DOW_LOCAL, DST_OFFSET, EPOCH_JULIAN_DAY, ERA, EXTENDED_YEAR, FEBRUARY, FRIDAY, GREATEST_MINIMUM, HOUR, HOUR_OF_DAY, INTERNALLY_SET, IS_LEAP_MONTH, JAN_1_1_JULIAN_DAY, JANUARY, JULIAN_DAY, JULY, JUNE, LEAST_MAXIMUM, MARCH, MAX_DATE, MAX_FIELD_COUNT, MAX_JULIAN, MAX_MILLIS, MAXIMUM, MAY, MILLISECOND, MILLISECONDS_IN_DAY, MIN_DATE, MIN_JULIAN, MIN_MILLIS, MINIMUM, MINIMUM_USER_STAMP, MINUTE, MONDAY, MONTH, NOVEMBER, OCTOBER, ONE_DAY, ONE_HOUR, ONE_MINUTE, ONE_SECOND, ONE_WEEK, ORDINAL_MONTH, PM, RESOLVE_REMAP, SATURDAY, SECOND, SEPTEMBER, SUNDAY, THURSDAY, TUESDAY, UNDECIMBER, UNSET, WALLTIME_FIRST, WALLTIME_LAST, WALLTIME_NEXT_VALID, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, WEEKDAY, WEEKEND, WEEKEND_CEASE, WEEKEND_ONSET, YEAR, YEAR_WOY, ZONE_OFFSET
-
-