Class IslamicChronology
- java.lang.Object
-
- org.joda.time.Chronology
-
- org.joda.time.chrono.BaseChronology
-
- org.joda.time.chrono.AssembledChronology
-
- org.joda.time.chrono.IslamicChronology
-
- All Implemented Interfaces:
java.io.Serializable
public final class IslamicChronology extends AssembledChronology
Implements the Islamic, or Hijri, calendar system using arithmetic rules.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-Hasib
You 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.
- Since:
- 1.2
- See Also:
- Wikipedia, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
IslamicChronology.LeapYearPatternType
Opaque object describing a leap year pattern for the Islamic Chronology.-
Nested classes/interfaces inherited from class org.joda.time.chrono.AssembledChronology
AssembledChronology.Fields
-
-
Field Summary
Fields Modifier and Type Field 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.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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.-
Methods inherited from class org.joda.time.chrono.AssembledChronology
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
-
-
-
-
Field Detail
-
AH
public static final int AH
Constant value for 'Anno Hegirae', equivalent to the value returned for AD/CE.- See Also:
- Constant Field Values
-
LEAP_YEAR_15_BASED
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_15_BASED
Leap year 15-based pattern.
-
LEAP_YEAR_16_BASED
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_16_BASED
Leap year 16-based pattern.
-
LEAP_YEAR_INDIAN
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_INDIAN
Leap year Indian pattern.
-
LEAP_YEAR_HABASH_AL_HASIB
public static final IslamicChronology.LeapYearPatternType LEAP_YEAR_HABASH_AL_HASIB
Leap year Habash al-Hasib pattern.
-
-
Method Detail
-
getInstanceUTC
public static IslamicChronology getInstanceUTC()
Gets an instance of the IslamicChronology. The time zone of the returned instance is UTC.- Returns:
- a singleton UTC instance of the chronology
-
getInstance
public static IslamicChronology getInstance()
Gets an instance of the IslamicChronology in the default time zone.- Returns:
- a chronology in the default time zone
-
getInstance
public static IslamicChronology getInstance(DateTimeZone zone)
Gets an instance of the IslamicChronology in the given time zone.- Parameters:
zone
- the time zone to get the chronology in, null is default- Returns:
- a chronology in the specified time zone
-
getInstance
public static IslamicChronology getInstance(DateTimeZone zone, IslamicChronology.LeapYearPatternType leapYears)
Gets an instance of the IslamicChronology in the given time zone.- Parameters:
zone
- the time zone to get the chronology in, null is defaultleapYears
- the type defining the leap year pattern- Returns:
- a chronology in the specified time zone
-
getLeapYearPatternType
public IslamicChronology.LeapYearPatternType getLeapYearPatternType()
Gets the leap year pattern type.- Returns:
- the pattern type
-
withUTC
public Chronology withUTC()
Gets the Chronology in the UTC time zone.- Specified by:
withUTC
in classBaseChronology
- Returns:
- the chronology in UTC
-
withZone
public Chronology withZone(DateTimeZone zone)
Gets the Chronology in a specific time zone.- Specified by:
withZone
in classBaseChronology
- Parameters:
zone
- the zone to get the chronology in, null is default- Returns:
- the chronology
- See Also:
ZonedChronology
-
equals
public boolean equals(java.lang.Object obj)
Checks if this chronology instance equals another.- Parameters:
obj
- the object to compare to- Returns:
- true if equal
- Since:
- 2.3
-
hashCode
public int hashCode()
A suitable hash code for the chronology.- Returns:
- the hash code
- Since:
- 1.6
-
getZone
public DateTimeZone getZone()
Description copied from class:BaseChronology
Returns the DateTimeZone that this Chronology operates in, or null if unspecified.- Overrides:
getZone
in classAssembledChronology
- Returns:
- DateTimeZone null if unspecified
-
getDateTimeMillis
public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int millisOfDay) throws java.lang.IllegalArgumentException
Description copied from class:BaseChronology
Returns a datetime millisecond instant, formed from the given year, month, day, and millisecond values. The set of given values must refer to a valid datetime, or else an IllegalArgumentException is thrown.The default implementation calls upon separate DateTimeFields to determine the result. Subclasses are encouraged to provide a more efficient implementation.
- Overrides:
getDateTimeMillis
in classAssembledChronology
- Parameters:
year
- year to usemonthOfYear
- month to usedayOfMonth
- day of month to usemillisOfDay
- millisecond to use- Returns:
- millisecond instant from 1970-01-01T00:00:00Z
- Throws:
java.lang.IllegalArgumentException
- if the values are invalid
-
getDateTimeMillis
public long getDateTimeMillis(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour, int secondOfMinute, int millisOfSecond) throws java.lang.IllegalArgumentException
Description copied from class:BaseChronology
Returns a datetime millisecond instant, formed from the given year, month, day, hour, minute, second, and millisecond values. The set of given values must refer to a valid datetime, or else an IllegalArgumentException is thrown.The default implementation calls upon separate DateTimeFields to determine the result. Subclasses are encouraged to provide a more efficient implementation.
- Overrides:
getDateTimeMillis
in classAssembledChronology
- Parameters:
year
- year to usemonthOfYear
- month to usedayOfMonth
- day of month to usehourOfDay
- hour to useminuteOfHour
- minute to usesecondOfMinute
- second to usemillisOfSecond
- millisecond to use- Returns:
- millisecond instant from 1970-01-01T00:00:00Z
- Throws:
java.lang.IllegalArgumentException
- if the values are invalid
-
getMinimumDaysInFirstWeek
public int getMinimumDaysInFirstWeek()
-
toString
public java.lang.String toString()
Gets a debugging toString.- Specified by:
toString
in classBaseChronology
- Returns:
- a debugging string
-
-