public final class IslamicChronology extends AssembledChronology
This calendar is a lunar calendar with a shorter year than ISO. Year 1 in the Islamic calendar began on July 16, 622 CE (Julian), thus Islamic years do not begin at the same time as Julian years. This chronology is not proleptic, as it does not allow dates before the first Islamic year.
There are two basic forms of the Islamic calendar, the tabular and the observed. The observed form cannot easily be used by computers as it relies on human observation of the new moon. The tabular calendar, implemented here, is an arithmetical approximation of the observed form that follows relatively simple rules.
The tabular form of the calendar defines 12 months of alternately 30 and 29 days. The last month is extended to 30 days in a leap year. Leap years occur according to a 30 year cycle. There are four recognised patterns of leap years in the 30 year cycle:
Years 2, 5, 7, 10, 13, 15, 18, 21, 24, 26 & 29 - 15-based, used by Microsoft Years 2, 5, 7, 10, 13, 16, 18, 21, 24, 26 & 29 - 16-based, most commonly used Years 2, 5, 8, 10, 13, 16, 19, 21, 24, 27 & 29 - Indian Years 2, 5, 8, 11, 13, 16, 19, 21, 24, 27 & 30 - Habash al-HasibYou can select which pattern to use via the factory methods, or use the default (16-based).
This implementation defines a day as midnight to midnight exactly as per the ISO chronology. This correct start of day is at sunset on the previous day, however this cannot readily be modelled and has been ignored.
IslamicChronology is thread-safe and immutable.
Modifier and Type | Class and Description |
---|---|
static class |
IslamicChronology.LeapYearPatternType
Opaque object describing a leap year pattern for the Islamic Chronology.
|
AssembledChronology.Fields
Modifier and Type | Field and Description |
---|---|
static int |
AH
Constant value for 'Anno Hegirae', equivalent
to the value returned for AD/CE.
|
static IslamicChronology.LeapYearPatternType |
LEAP_YEAR_15_BASED
Leap year 15-based pattern.
|
static IslamicChronology.LeapYearPatternType |
LEAP_YEAR_16_BASED
Leap year 16-based pattern.
|
static IslamicChronology.LeapYearPatternType |
LEAP_YEAR_HABASH_AL_HASIB
Leap year Habash al-Hasib pattern.
|
static IslamicChronology.LeapYearPatternType |
LEAP_YEAR_INDIAN
Leap year Indian pattern.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(java.lang.Object obj)
Checks if this chronology instance equals another.
|
long |
getDateTimeMillis(int year,
int monthOfYear,
int dayOfMonth,
int millisOfDay)
Returns a datetime millisecond instant, formed from the given year,
month, day, and millisecond values.
|
long |
getDateTimeMillis(int year,
int monthOfYear,
int dayOfMonth,
int hourOfDay,
int minuteOfHour,
int secondOfMinute,
int millisOfSecond)
Returns a datetime millisecond instant, formed from the given year,
month, day, hour, minute, second, and millisecond values.
|
static IslamicChronology |
getInstance()
Gets an instance of the IslamicChronology in the default time zone.
|
static IslamicChronology |
getInstance(DateTimeZone zone)
Gets an instance of the IslamicChronology in the given time zone.
|
static IslamicChronology |
getInstance(DateTimeZone zone,
IslamicChronology.LeapYearPatternType leapYears)
Gets an instance of the IslamicChronology in the given time zone.
|
static IslamicChronology |
getInstanceUTC()
Gets an instance of the IslamicChronology.
|
IslamicChronology.LeapYearPatternType |
getLeapYearPatternType()
Gets the leap year pattern type.
|
int |
getMinimumDaysInFirstWeek() |
DateTimeZone |
getZone()
Returns the DateTimeZone that this Chronology operates in, or null if
unspecified.
|
int |
hashCode()
A suitable hash code for the chronology.
|
java.lang.String |
toString()
Gets a debugging toString.
|
Chronology |
withUTC()
Gets the Chronology in the UTC time zone.
|
Chronology |
withZone(DateTimeZone zone)
Gets the Chronology in a specific time zone.
|
centuries, centuryOfEra, clockhourOfDay, clockhourOfHalfday, dayOfMonth, dayOfWeek, dayOfYear, days, era, eras, getDateTimeMillis, halfdayOfDay, halfdays, hourOfDay, hourOfHalfday, hours, millis, millisOfDay, millisOfSecond, minuteOfDay, minuteOfHour, minutes, monthOfYear, months, secondOfDay, secondOfMinute, seconds, weekOfWeekyear, weeks, weekyear, weekyearOfCentury, weekyears, year, yearOfCentury, yearOfEra, years
public static final int AH
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_15_BASED
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_16_BASED
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_INDIAN
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_HABASH_AL_HASIB
public static IslamicChronology getInstanceUTC()
public static IslamicChronology getInstance()
public static IslamicChronology getInstance(DateTimeZone zone)
zone
- the time zone to get the chronology in, null is defaultpublic static IslamicChronology getInstance(DateTimeZone zone, IslamicChronology.LeapYearPatternType leapYears)
zone
- the time zone to get the chronology in, null is defaultleapYears
- the type defining the leap year patternpublic IslamicChronology.LeapYearPatternType getLeapYearPatternType()
public Chronology withUTC()
withUTC
in class BaseChronology
public Chronology withZone(DateTimeZone zone)
withZone
in class BaseChronology
zone
- the zone to get the chronology in, null is defaultZonedChronology
public boolean equals(java.lang.Object obj)
obj
- the object to compare topublic int hashCode()
public DateTimeZone getZone()
BaseChronology
getZone
in class AssembledChronology
public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int millisOfDay) throws java.lang.IllegalArgumentException
BaseChronology
The default implementation calls upon separate DateTimeFields to determine the result. Subclasses are encouraged to provide a more efficient implementation.
getDateTimeMillis
in class AssembledChronology
year
- year to usemonthOfYear
- month to usedayOfMonth
- day of month to usemillisOfDay
- millisecond to usejava.lang.IllegalArgumentException
- if the values are invalidpublic long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond) throws java.lang.IllegalArgumentException
BaseChronology
The default implementation calls upon separate DateTimeFields to determine the result. Subclasses are encouraged to provide a more efficient implementation.
getDateTimeMillis
in class AssembledChronology
year
- year to usemonthOfYear
- month to usedayOfMonth
- day of month to usehourOfDay
- hour to useminuteOfHour
- minute to usesecondOfMinute
- second to usemillisOfSecond
- millisecond to usejava.lang.IllegalArgumentException
- if the values are invalidpublic int getMinimumDaysInFirstWeek()
public java.lang.String toString()
toString
in class BaseChronology
"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"