Top Description Inners Fields Constructors Methods
com.ibm.icu.util

public Class IslamicCalendar

extends Calendar
Class Inheritance
Imports
java.io.IOException, .ObjectInputStream, java.util.Date, .Locale, com.ibm.icu.impl.CalendarAstronomer, .CalendarCache, .CalendarUtil, com.ibm.icu.util.ULocale.Category

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 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 IslamicCalendar object.

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 setCalculationType method determines which approach is used to determine the start of a month. By default, the fixed-cycle civil calendar is used. However, if setCalculationType(ISLAMIC) is called, an approximation of the true lunar calendar will be used. Similarly, if setCalculationType(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 com.ibm.icu.util.Calendar#getInstance(ULocale) passing in a ULocale with the tag "@calendar=islamic" or "@calendar=islamic-civil" or "@calendar=islamic-umalqura".

Authors
Laura Werner, Alan Liu
ICU Status
Stable since ICU 2.8.
See Also
com.ibm.icu.util.GregorianCalendar, com.ibm.icu.util.Calendar

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
IslamicCalendar.CalculationType

enumeration of available calendar calculation types

Field Summary

Modifier and TypeField and Description
private static CalendarAstronomer
private static final long
ASTRONOMICAL_EPOC

Thursday EPOC

private static CalendarCache
private boolean
civil

true if this object uses the fixed-cycle Islamic civil calendar, and false if it approximates the true religious calendar using astronomical calculations for the time of the new moon.

private static final long
CIVIL_EPOC

Friday EPOC

private IslamicCalendar.CalculationType
cType

determines the type of calculation to use for this instance

public static final int
DHU_AL_HIJJAH

Constant for Dhu al-Hijjah, the 12th month of the Islamic year.

public static final int
DHU_AL_QIDAH

Constant for Dhu al-Qi'dah, the 11th month of the Islamic year.

private static final long
public static final int
JUMADA_1

Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year.

public static final int
JUMADA_2

Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year.

private static final int[][]
public static final int
MUHARRAM

Constant for Muharram, the 1st month of the Islamic year.

public static final int
RABI_1

Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year.

public static final int
RABI_2

Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year.

public static final int
RAJAB

Constant for Rajab, the 7th month of the Islamic year.

public static final int
RAMADAN

Constant for Ramadan, the 9th month of the Islamic year.

public static final int
SAFAR

Constant for Safar, the 2nd month of the Islamic year.

private static final long
public static final int
SHABAN

Constant for Sha'ban, the 8th month of the Islamic year.

public static final int
SHAWWAL

Constant for Shawwal, the 10th month of the Islamic year.

private static final int[]
private static final int
private static final int
private static final byte[]
Inherited from com.ibm.icu.util.Calendar:
AMAM_PMAPRILAUGUSTBASE_FIELD_COUNTDATEDATE_PRECEDENCEDAY_OF_MONTHDAY_OF_WEEKDAY_OF_WEEK_IN_MONTHDAY_OF_YEARDECEMBERDOW_LOCALDOW_PRECEDENCEDST_OFFSETEPOCH_JULIAN_DAYERAEXTENDED_YEARFEBRUARYFRIDAYGREATEST_MINIMUMHOURHOUR_OF_DAYINTERNALLY_SETIS_LEAP_MONTHJAN_1_1_JULIAN_DAYJANUARYJULIAN_DAYJULYJUNELEAST_MAXIMUMMARCHMAX_DATEMAX_FIELD_COUNTMAX_JULIANMAX_MILLISMAXIMUMMAYMILLISECONDMILLISECONDS_IN_DAYMIN_DATEMIN_JULIANMIN_MILLISMINIMUMMINIMUM_USER_STAMPMINUTEMONDAYMONTHMONTH_PRECEDENCENOVEMBEROCTOBERONE_DAYONE_HOURONE_MINUTEONE_SECONDONE_WEEKORDINAL_MONTHPMRESOLVE_REMAPSATURDAYSECONDSEPTEMBERSUNDAYTHURSDAYTUESDAYUNDECIMBERUNSETWALLTIME_FIRSTWALLTIME_LASTWALLTIME_NEXT_VALIDWEDNESDAYWEEK_OF_MONTHWEEK_OF_YEARWEEKDAYWEEKENDWEEKEND_CEASEWEEKEND_ONSETYEARYEAR_WOYZONE_OFFSET

Constructor Summary

AccessConstructor and Description
public
IslamicCalendar()

Constructs a default IslamicCalendar using the current time in the default time zone with the default FORMAT locale.

public
IslamicCalendar(TimeZone
the given time zone.
zone
)

Constructs an IslamicCalendar based on the current time in the given time zone with the default FORMAT locale.

public
IslamicCalendar(Locale
the given locale.
aLocale
)

Constructs an IslamicCalendar based on the current time in the default time zone with the given locale.

public
IslamicCalendar(ULocale
the given ulocale.
locale
)

Constructs an IslamicCalendar based on the current time in the default time zone with the given locale.

public
IslamicCalendar(TimeZone
the given time zone.
zone
,
Locale
the given locale.
aLocale
)

Constructs an IslamicCalendar based on the current time in the given time zone with the given locale.

public
IslamicCalendar(TimeZone
the given time zone.
zone
,
ULocale
the given ulocale.
locale
)

Constructs an IslamicCalendar based on the current time in the given time zone with the given locale.

public
IslamicCalendar(Date
The date to which the new calendar is set.
date
)

Constructs an IslamicCalendar with the given date set in the default time zone with the default FORMAT locale.

public
IslamicCalendar(int
the value used to set the YEAR time field in the calendar.
year
,
int
the value used to set the MONTH time field in the calendar. Note that the month value is 0-based. e.g., 0 for Muharram.
month
,
int
the value used to set the DATE time field in the calendar.
date
)

Constructs an IslamicCalendar with the given date set in the default time zone with the default FORMAT locale.

public
IslamicCalendar(int
the value used to set the YEAR time field in the calendar.
year
,
int
the value used to set the MONTH time field in the calendar. Note that the month value is 0-based. e.g., 0 for Muharram.
month
,
int
the value used to set the DATE time field in the calendar.
date
,
int
the value used to set the HOUR_OF_DAY time field in the calendar.
hour
,
int
the value used to set the MINUTE time field in the calendar.
minute
,
int
the value used to set the SECOND time field in the calendar.
second
)

Constructs an IslamicCalendar with the given date and time set for the default time zone with the default FORMAT locale.

Method Summary

Modifier and TypeMethod and Description
private static final boolean
civilLeapYear(int year)

Determine whether a year is a leap year in the Islamic civil calendar

public IslamicCalendar.CalculationType
getCalculationType()

gets the calculation type for this calendar.

public String
protected void
handleComputeFields(int julianDay)

Overrides com.ibm.icu.util.Calendar.handleComputeFields.

Override Calendar to compute several fields specific to the Islamic calendar system.
protected int
handleComputeMonthStart(int
the extended year
eyear
,
int
the zero-based month, or 0 if useMonth is false
month
,
boolean
if false, compute the day before the first day of the given year, otherwise, compute the day before the first day of the given month
useMonth
)

Implements abstract com.ibm.icu.util.Calendar.handleComputeMonthStart.

Returns the Julian day number of day before the first day of the given month in the given extended year.
protected int
handleGetExtendedYear()

Implements abstract com.ibm.icu.util.Calendar.handleGetExtendedYear.

Returns the extended year defined by the current fields.
protected int
handleGetLimit(int
one of the above field numbers
field
,
int
one of MINIMUM, GREATEST_MINIMUM, LEAST_MAXIMUM, or MAXIMUM
limitType
)

Implements abstract com.ibm.icu.util.Calendar.handleGetLimit.

Subclass API for defining limits of different types.
protected int
handleGetMonthLength(int
The hijri year
extendedYear
,
int
The hijri month, 0-based
month
)

Overrides com.ibm.icu.util.Calendar.handleGetMonthLength.

Return the length (in days) of the given month.
protected int
handleGetYearLength(int extendedYear)

Overrides com.ibm.icu.util.Calendar.handleGetYearLength.

Return the number of days in the given Islamic year
public boolean

Returns:

true if the date in the fields is in a Temporal proposal defined leap year. False otherwise.
inTemporalLeapYear
()

Overrides com.ibm.icu.util.Calendar.inTemporalLeapYear.

ICU

public boolean
isCivil()

Returns true if this object is using the fixed-cycle civil calendar, or false if using the religious, astronomical calendar.

private long
monthStart(int
The hijri year
year
,
int
The hijri month, 0-based
month
)

Return the day # on which the given month starts.

pack-priv static final double
moonAge(long
The time at which the moon's age is desired, in millis since 1/1/1970.
time
)

Return the "age" of the moon at the given time; this is the difference in ecliptic latitude between the moon and the sun.

private void
readObject(ObjectInputStream in)

Hides com.ibm.icu.util.Calendar.readObject.

Reconstitute this object from a stream (i.e., deserialize it).
private void
setCalcTypeForLocale(ULocale locale)

set type based on locale

public void
setCalculationType(IslamicCalendar.CalculationType type)

sets the calculation type for this calendar.

public void
setCivil(boolean
true to use the civil calendar, false to use the astronomical calendar.
beCivil
)

Determines whether this object uses the fixed-cycle Islamic civil calendar or an approximation of the religious, astronomical calendar.

private static final long

Returns:

The day number on which the given month starts.
trueMonthStart
(long
The month in question, origin 0 from the Hijri epoch
month
)

Find the day number on which a particular month of the true/lunar Islamic calendar starts.

private long
yearStart(int year)

Return the day # on which the given year starts.

Inherited from com.ibm.icu.util.Calendar:
addafterbeforeclearclearclonecompareTocompletecomputeFieldscomputeGregorianFieldscomputeGregorianMonthStartcomputeJulianDaycomputeMillisInDaycomputeMillisInDayLongcomputeTimecomputeZoneOffsetcomputeZoneOffsetequalsfieldDifferencefieldNamefloorDividefloorDividefloorDividefloorDividegetgetActualMaximumgetActualMinimumgetAvailableLocalesgetAvailableULocalesgetDateAtTimePatterngetDateTimeFormatgetDateTimeFormatgetDateTimePatterngetDayOfWeekTypegetDefaultDayInMonthgetDefaultMonthInYeargetDisplayNamegetDisplayNamegetFieldCountgetFieldResolutionTablegetFirstDayOfWeekgetGreatestMinimumgetGregorianDayOfMonthgetGregorianDayOfYeargetGregorianMonthgetGregorianYeargetInstancegetInstancegetInstancegetInstancegetInstancegetInstancegetKeywordValuesForLocalegetLeastMaximumgetLimitgetLocalegetMaximumgetMinimalDaysInFirstWeekgetMinimumgetRelatedYeargetRepeatedWallTimeOptiongetSkippedWallTimeOptiongetStampgetTemporalMonthCodegetTimegetTimeInMillisgetTimeZonegetWeekDatagetWeekDataForRegiongetWeekendTransitiongregorianMonthLengthgregorianPreviousMonthLengthhandleComputeJulianDayhandleCreateFieldshandleGetDateFormathandleGetDateFormathandleGetDateFormathandleGetDateFormathashCodehaveDefaultCenturyinternalGetinternalGetinternalGetMonthinternalGetMonthinternalGetTimeInMillisinternalSetisEquivalentToisGregorianLeapYearisLenientisSetisWeekendisWeekendjulianDayToDayOfWeekjulianDayToMillismillisToJulianDaynewerFieldnewestStamppinFieldprepareGetActualresolveFieldsrollrollsetsetsetsetsetFirstDayOfWeeksetLenientsetLocalesetMinimalDaysInFirstWeeksetRelatedYearsetRepeatedWallTimeOptionsetSkippedWallTimeOptionsetTemporalMonthCodesetTimesetTimeInMillissetTimeZonesetWeekDatatoStringvalidateFieldvalidateFieldvalidateFieldsweekNumberweekNumber

Field Detail

astroback to summary
private static CalendarAstronomer astro
ASTRONOMICAL_EPOCback to summary
private static final long ASTRONOMICAL_EPOC

Thursday EPOC

cacheback to summary
private static CalendarCache cache
civilback to summary
private boolean civil

true if this object uses the fixed-cycle Islamic civil calendar, and false if it approximates the true religious calendar using astronomical calculations for the time of the new moon.

CIVIL_EPOCback to summary
private static final long CIVIL_EPOC

Friday EPOC

cTypeback to summary
private IslamicCalendar.CalculationType cType

determines the type of calculation to use for this instance

ICU Status
Stable since ICU 52.
DHU_AL_HIJJAHback to summary
public static final int DHU_AL_HIJJAH

Constant for Dhu al-Hijjah, the 12th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
DHU_AL_QIDAHback to summary
public static final int DHU_AL_QIDAH

Constant for Dhu al-Qi'dah, the 11th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
HIJRA_MILLISback to summary
private static final long HIJRA_MILLIS
JUMADA_1back to summary
public static final int JUMADA_1

Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
JUMADA_2back to summary
public static final int JUMADA_2

Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
LIMITSback to summary
private static final int[][] LIMITS

Hides com.ibm.icu.util.Calendar.LIMITS.

MUHARRAMback to summary
public static final int MUHARRAM

Constant for Muharram, the 1st month of the Islamic year.

ICU Status
Stable since ICU 2.8.
RABI_1back to summary
public static final int RABI_1

Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year.

ICU Status
Stable since ICU 2.8.
RABI_2back to summary
public static final int RABI_2

Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
RAJABback to summary
public static final int RAJAB

Constant for Rajab, the 7th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
RAMADANback to summary
public static final int RAMADAN

Constant for Ramadan, the 9th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
SAFARback to summary
public static final int SAFAR

Constant for Safar, the 2nd month of the Islamic year.

ICU Status
Stable since ICU 2.8.
serialVersionUIDback to summary
private static final long serialVersionUID

Hides com.ibm.icu.util.Calendar.serialVersionUID.

SHABANback to summary
public static final int SHABAN

Constant for Sha'ban, the 8th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
SHAWWALback to summary
public static final int SHAWWAL

Constant for Shawwal, the 10th month of the Islamic year.

ICU Status
Stable since ICU 2.8.
UMALQURA_MONTHLENGTHback to summary
private static final int[] UMALQURA_MONTHLENGTH
UMALQURA_YEAR_ENDback to summary
private static final int UMALQURA_YEAR_END
UMALQURA_YEAR_STARTback to summary
private static final int UMALQURA_YEAR_START
UMALQURA_YEAR_START_ESTIMATE_FIXback to summary
private static final byte[] UMALQURA_YEAR_START_ESTIMATE_FIX

Constructor Detail

IslamicCalendarback to summary
public IslamicCalendar()

Constructs a default IslamicCalendar using the current time in the default time zone with the default FORMAT locale.

ICU Status
Stable since ICU 2.8.
See Also
Category#FORMAT
IslamicCalendarback to summary
public IslamicCalendar(TimeZone zone)

Constructs an IslamicCalendar based on the current time in the given time zone with the default FORMAT locale.

Parameters
zone:TimeZone

the given time zone.

ICU Status
Stable since ICU 2.8.
See Also
Category#FORMAT
IslamicCalendarback to summary
public IslamicCalendar(Locale aLocale)

Constructs an IslamicCalendar based on the current time in the default time zone with the given locale.

Parameters
aLocale:Locale

the given locale.

ICU Status
Stable since ICU 2.8.
IslamicCalendarback to summary
public IslamicCalendar(ULocale locale)

Constructs an IslamicCalendar based on the current time in the default time zone with the given locale.

Parameters
locale:ULocale

the given ulocale.

ICU Status
Stable since ICU 3.2.
IslamicCalendarback to summary
public IslamicCalendar(TimeZone zone, Locale aLocale)

Constructs an IslamicCalendar based on the current time in the given time zone with the given locale.

Parameters
zone:TimeZone

the given time zone.

aLocale:Locale

the given locale.

ICU Status
Stable since ICU 2.8.
IslamicCalendarback to summary
public IslamicCalendar(TimeZone zone, ULocale locale)

Constructs an IslamicCalendar based on the current time in the given time zone with the given locale.

Parameters
zone:TimeZone

the given time zone.

locale:ULocale

the given ulocale.

ICU Status
Stable since ICU 3.2.
IslamicCalendarback to summary
public IslamicCalendar(Date date)

Constructs an IslamicCalendar with the given date set in the default time zone with the default FORMAT locale.

Parameters
date:Date

The date to which the new calendar is set.

ICU Status
Stable since ICU 2.8.
See Also
Category#FORMAT
IslamicCalendarback to summary
public IslamicCalendar(int year, int month, int date)

Constructs an IslamicCalendar with the given date set in the default time zone with the default FORMAT locale.

Parameters
year:int

the value used to set the YEAR time field in the calendar.

month:int

the value used to set the MONTH time field in the calendar. Note that the month value is 0-based. e.g., 0 for Muharram.

date:int

the value used to set the DATE time field in the calendar.

ICU Status
Stable since ICU 2.8.
See Also
Category#FORMAT
IslamicCalendarback to summary
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 FORMAT locale.

Parameters
year:int

the value used to set the YEAR time field in the calendar.

month:int

the value used to set the MONTH time field in the calendar. Note that the month value is 0-based. e.g., 0 for Muharram.

date:int

the value used to set the DATE time field in the calendar.

hour:int

the value used to set the HOUR_OF_DAY time field in the calendar.

minute:int

the value used to set the MINUTE time field in the calendar.

second:int

the value used to set the SECOND time field in the calendar.

ICU Status
Stable since ICU 2.8.
See Also
Category#FORMAT

Method Detail

civilLeapYearback to summary
private static final boolean civilLeapYear(int year)

Determine whether a year is a leap year in the Islamic civil calendar

getCalculationTypeback to summary
public IslamicCalendar.CalculationType getCalculationType()

gets the calculation type for this calendar.

ICU Status
Stable since ICU 55.
getTypeback to summary
public String getType()

Overrides com.ibm.icu.util.Calendar.getType.

Doc from com.ibm.icu.util.Calendar.getType.

ICU

Returns the calendar type name string for this Calendar object. The returned string is the legacy ICU calendar attribute value, for example, "gregorian" or "japanese".

See type="old type name" for the calendar attribute of locale IDs at http://www.unicode.org/reports/tr35/#Key_Type_Definitions

Returns:String

legacy calendar type name string

Annotations
@Override
ICU Status
Stable since ICU 3.8.
handleComputeFieldsback to summary
protected void handleComputeFields(int julianDay)

Overrides com.ibm.icu.util.Calendar.handleComputeFields.

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.
Annotations
@Override
ICU Status
Stable since ICU 2.8.
handleComputeMonthStartback to summary
protected int handleComputeMonthStart(int eyear, int month, boolean useMonth)

Implements abstract com.ibm.icu.util.Calendar.handleComputeMonthStart.

Doc from com.ibm.icu.util.Calendar.handleComputeMonthStart.

Returns the Julian day number of day before the first day of the given month in the given extended year. Subclasses should override this method to implement their calendar system.

Parameters
eyear:int

the extended year

month:int

the zero-based month, or 0 if useMonth is false

useMonth:boolean

if false, compute the day before the first day of the given year, otherwise, compute the day before the first day of the given month

Returns:int

the Julian day number of the day before the first day of the given month and year

Annotations
@Override
ICU Status
Stable since ICU 2.8.
handleGetExtendedYearback to summary
protected int handleGetExtendedYear()

Implements abstract com.ibm.icu.util.Calendar.handleGetExtendedYear.

Doc from com.ibm.icu.util.Calendar.handleGetExtendedYear.

Returns the extended year defined by the current fields. This will use the EXTENDED_YEAR field or the YEAR and supra-year fields (such as ERA) specific to the calendar system, depending on which set of fields is newer.

Returns:int

the extended year

Annotations
@Override
ICU Status
Stable since ICU 2.8.
handleGetLimitback to summary
protected int handleGetLimit(int field, int limitType)

Implements abstract com.ibm.icu.util.Calendar.handleGetLimit.

Doc from com.ibm.icu.util.Calendar.handleGetLimit.

Subclass API for defining limits of different types. Subclasses must implement this method to return limits for the following fields:

ERA
YEAR
MONTH
WEEK_OF_YEAR
WEEK_OF_MONTH
DAY_OF_MONTH
DAY_OF_YEAR
DAY_OF_WEEK_IN_MONTH
YEAR_WOY
EXTENDED_YEAR
Parameters
field:int

one of the above field numbers

limitType:int

one of MINIMUM, GREATEST_MINIMUM, LEAST_MAXIMUM, or MAXIMUM

Annotations
@Override
ICU Status
Stable since ICU 2.8.
handleGetMonthLengthback to summary
protected int handleGetMonthLength(int extendedYear, int month)

Overrides com.ibm.icu.util.Calendar.handleGetMonthLength.

Return the length (in days) of the given month.

Parameters
extendedYear:int

The hijri year

month:int

The hijri month, 0-based

Annotations
@Override
ICU Status
Stable since ICU 2.8.
handleGetYearLengthback to summary
protected int handleGetYearLength(int extendedYear)

Overrides com.ibm.icu.util.Calendar.handleGetYearLength.

Return the number of days in the given Islamic year

Annotations
@Override
ICU Status
Stable since ICU 2.8.
inTemporalLeapYearback to summary
public boolean inTemporalLeapYear()

Overrides com.ibm.icu.util.Calendar.inTemporalLeapYear.

ICU

Returns true if the date is in a leap year. Recalculate the current time field values if the time value has been changed by a call to setTime(). This method is semantically const, but may alter the object in memory. A "leap year" is a year that contains more days than other years (for solar or lunar calendars) or more months than other years (for lunisolar calendars like Hebrew or Chinese), as defined in the ECMAScript Temporal proposal.
Returns:boolean

true if the date in the fields is in a Temporal proposal defined leap year. False otherwise.

ICU Status
Draft since ICU 74.
isCivilback to summary
public boolean isCivil()

Returns true if this object is using the fixed-cycle civil calendar, or false if using the religious, astronomical calendar.

ICU Status
Stable since ICU 2.8.
monthStartback to summary
private long monthStart(int year, int month)

Return the day # on which the given month starts. Days are counted from the Hijri epoch, origin 0.

Parameters
year:int

The hijri year

month:int

The hijri month, 0-based

moonAgeback to summary
pack-priv static final 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. This method simply calls CalendarAstronomer.moonAge, converts to degrees, and adjusts the resultto be in the range [-180, 180].

Parameters
time:long

The time at which the moon's age is desired, in millis since 1/1/1970.

readObjectback to summary
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException

Hides com.ibm.icu.util.Calendar.readObject.

Doc from com.ibm.icu.util.Calendar.readObject.

Reconstitute this object from a stream (i.e., deserialize it).

setCalcTypeForLocaleback to summary
private void setCalcTypeForLocale(ULocale locale)

set type based on locale

setCalculationTypeback to summary
public void setCalculationType(IslamicCalendar.CalculationType type)

sets the calculation type for this calendar.

ICU Status
Stable since ICU 55.
setCivilback to summary
public void setCivil(boolean beCivil)

Determines whether this object uses the fixed-cycle Islamic civil calendar or an approximation of the religious, astronomical calendar.

Parameters
beCivil:boolean

true to use the civil calendar, false to use the astronomical calendar.

ICU Status
Stable since ICU 2.8.
trueMonthStartback to summary
private static final long trueMonthStart(long month)

Find the day number on which a particular month of the true/lunar Islamic calendar starts.

Parameters
month:long

The month in question, origin 0 from the Hijri epoch

Returns:long

The day number on which the given month starts.

yearStartback to summary
private long yearStart(int year)

Return the day # on which the given year starts. Days are counted from the Hijri epoch, origin 0.

com.ibm.icu.util back to summary

public final Enum IslamicCalendar.CalculationType

extends Enum<IslamicCalendar.CalculationType>
Class Inheritance

enumeration of available calendar calculation types
ICU Status
Stable since ICU 52.

Field Summary

Modifier and TypeField and Description
private String
public static final IslamicCalendar.CalculationType
ISLAMIC

Religious calendar (astronomical simulation)

public static final IslamicCalendar.CalculationType
ISLAMIC_CIVIL

Tabular (intercalary years [2,5,7,10,13,16,18,21,24,26,29]) algorithm with civil (Friday) epoch.

public static final IslamicCalendar.CalculationType
ISLAMIC_TBLA

Tabular (intercalary years [2,5,7,10,13,16,18,21,24,26,29]) algorithm with astronomical (Thursday) epoch.

public static final IslamicCalendar.CalculationType
ISLAMIC_UMALQURA

Umm al-Qura calendar

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv String
public static IslamicCalendar.CalculationType
public static IslamicCalendar.CalculationType[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

bcpTypeback to summary
private String bcpType
ISLAMICback to summary
public static final IslamicCalendar.CalculationType ISLAMIC

Religious calendar (astronomical simulation)

ICU Status
Stable since ICU 52.
ISLAMIC_CIVILback to summary
public static final IslamicCalendar.CalculationType ISLAMIC_CIVIL

Tabular (intercalary years [2,5,7,10,13,16,18,21,24,26,29]) algorithm with civil (Friday) epoch.

ICU Status
Stable since ICU 52.
ISLAMIC_TBLAback to summary
public static final IslamicCalendar.CalculationType ISLAMIC_TBLA

Tabular (intercalary years [2,5,7,10,13,16,18,21,24,26,29]) algorithm with astronomical (Thursday) epoch.

ICU Status
Stable since ICU 52.
ISLAMIC_UMALQURAback to summary
public static final IslamicCalendar.CalculationType ISLAMIC_UMALQURA

Umm al-Qura calendar

ICU Status
Stable since ICU 52.

Constructor Detail

CalculationTypeback to summary
private CalculationType(String bcpType)

Method Detail

bcpTypeback to summary
pack-priv String bcpType()
valueOfback to summary
public static IslamicCalendar.CalculationType valueOf(String name)
valuesback to summary
public static IslamicCalendar.CalculationType[] values()