|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ibm.icu.util.Calendar
com.ibm.icu.util.IslamicCalendar
public class IslamicCalendar
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 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.
Note This API has not been promoted to @stable and instead has been left as @draft ICU 2.8. It may yet change or be removed in a future release.
GregorianCalendar
,
Serialized FormField Summary | |
---|---|
static int |
DHU_AL_HIJJAH
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
DHU_AL_QIDAH
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
JUMADA_1
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
JUMADA_2
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
MUHARRAM
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
RABI_1
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
RABI_2
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
RAJAB
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
RAMADAN
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
SAFAR
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
SHABAN
Deprecated. This is a draft API and might change in a future release of ICU. |
static int |
SHAWWAL
Deprecated. This is a draft API and might change in a future release of ICU. |
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, 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, PM, RESOLVE_REMAP, SATURDAY, SECOND, SEPTEMBER, SUNDAY, THURSDAY, TUESDAY, UNDECIMBER, UNSET, WEDNESDAY, WEEK_OF_MONTH, WEEK_OF_YEAR, WEEKDAY, WEEKEND, WEEKEND_CEASE, WEEKEND_ONSET, YEAR, YEAR_WOY, ZONE_OFFSET |
Constructor Summary | |
---|---|
IslamicCalendar()
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(Date date)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(int year,
int month,
int date)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(int year,
int month,
int date,
int hour,
int minute,
int second)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(Locale aLocale)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(TimeZone zone)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(TimeZone zone,
Locale aLocale)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(TimeZone zone,
ULocale locale)
Deprecated. This is a draft API and might change in a future release of ICU. |
|
IslamicCalendar(ULocale locale)
Deprecated. This is a draft API and might change in a future release of ICU. |
Method Summary | |
---|---|
String |
getType()
Deprecated. Return the current Calendar type. |
protected void |
handleComputeFields(int julianDay)
Deprecated. This is a draft API and might change in a future release of ICU. |
protected int |
handleComputeMonthStart(int eyear,
int month,
boolean useMonth)
Deprecated. This is a draft API and might change in a future release of ICU. |
protected int |
handleGetExtendedYear()
Deprecated. This is a draft API and might change in a future release of ICU. |
protected int |
handleGetLimit(int field,
int limitType)
Deprecated. This is a draft API and might change in a future release of ICU. |
protected int |
handleGetMonthLength(int extendedYear,
int month)
Deprecated. This is a draft API and might change in a future release of ICU. |
protected int |
handleGetYearLength(int extendedYear)
Deprecated. This is a draft API and might change in a future release of ICU. |
boolean |
isCivil()
Deprecated. This is a draft API and might change in a future release of ICU. |
void |
setCivil(boolean beCivil)
Deprecated. This is a draft API and might change in a future release of ICU. |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final int MUHARRAM
public static final int SAFAR
public static final int RABI_1
public static final int RABI_2
public static final int JUMADA_1
public static final int JUMADA_2
public static final int RAJAB
public static final int SHABAN
public static final int RAMADAN
public static final int SHAWWAL
public static final int DHU_AL_QIDAH
public static final int DHU_AL_HIJJAH
Constructor Detail |
---|
public IslamicCalendar()
IslamicCalendar
using the current time
in the default time zone with the default locale.
public IslamicCalendar(TimeZone zone)
IslamicCalendar
based on the current time
in the given time zone with the default locale.
zone
- the given time zone.public IslamicCalendar(Locale aLocale)
IslamicCalendar
based on the current time
in the default time zone with the given locale.
aLocale
- the given locale.public IslamicCalendar(ULocale locale)
IslamicCalendar
based on the current time
in the default time zone with the given locale.
locale
- the given ulocale.public IslamicCalendar(TimeZone zone, Locale aLocale)
IslamicCalendar
based on the current time
in the given time zone with the given locale.
zone
- the given time zone.aLocale
- the given locale.public IslamicCalendar(TimeZone zone, ULocale locale)
IslamicCalendar
based on the current time
in the given time zone with the given locale.
zone
- the given time zone.locale
- the given ulocale.public IslamicCalendar(Date date)
IslamicCalendar
with the given date set
in the default time zone with the default locale.
date
- The date to which the new calendar is set.public IslamicCalendar(int year, int month, int date)
IslamicCalendar
with the given date set
in the default time zone with the default locale.
year
- the value used to set the YEAR
time field in the calendar.month
- 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
- the value used to set the DATE
time field in the calendar.public IslamicCalendar(int year, int month, int date, int hour, int minute, int second)
IslamicCalendar
with the given date
and time set for the default time zone with the default locale.
year
- the value used to set the YEAR
time field in the calendar.month
- 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
- the value used to set the DATE
time field in the calendar.hour
- the value used to set the HOUR_OF_DAY
time field
in the calendar.minute
- the value used to set the MINUTE
time field
in the calendar.second
- the value used to set the SECOND
time field
in the calendar.Method Detail |
---|
public void setCivil(boolean beCivil)
beCivil
- true
to use the civil calendar,
false
to use the astronomical calendar.public boolean isCivil()
true
if this object is using the fixed-cycle civil
calendar, or false
if using the religious, astronomical
calendar.
protected int handleGetLimit(int field, int limitType)
Calendar
ERA YEAR MONTH WEEK_OF_YEAR WEEK_OF_MONTH DAY_OF_MONTH DAY_OF_YEAR DAY_OF_WEEK_IN_MONTH YEAR_WOY EXTENDED_YEAR
handleGetLimit
in class Calendar
field
- one of the above field numberslimitType
- one of MINIMUM
, GREATEST_MINIMUM
,
LEAST_MAXIMUM
, or MAXIMUM
protected int handleGetMonthLength(int extendedYear, int month)
handleGetMonthLength
in class Calendar
extendedYear
- The hijri yearmonth
- The hijri month, 0-basedprotected int handleGetYearLength(int extendedYear)
handleGetYearLength
in class Calendar
protected int handleComputeMonthStart(int eyear, int month, boolean useMonth)
Calendar
handleComputeMonthStart
in class Calendar
eyear
- the extended yearmonth
- the zero-based month, or 0 if useMonth is falseuseMonth
- 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
protected int handleGetExtendedYear()
Calendar
handleGetExtendedYear
in class Calendar
protected void handleComputeFields(int julianDay)
handleComputeFields
in class Calendar
public String getType()
getType
in class Calendar
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |