Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.joda.time.chrono
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
Author:
  Stephen Colebourne
See Also:
  Wikipedia, Serialized Form

Nested Class Summary
`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
`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
`protected void` | `assemble(AssembledChronology.Fields fields)` Invoked by the constructor and after deserialization to allow subclasses to define all of its supported fields.
`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.
`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, getBase, getDateTimeMillis, getParam, 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`

Methods inherited from class org.joda.time.chrono.BaseChronology
`add, add, get, get, get, set, validate`

Methods inherited from class org.joda.time.Chronology
`getBuddhist, getBuddhist, getBuddhistUTC, getCoptic, getCoptic, getCopticUTC, getGJ, getGJ, getGJUTC, getGregorian, getGregorian, getGregorianUTC, getISO, getISO, getISOUTC, getJulian, getJulian, getJulianUTC`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

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 default
    `leapYears` - 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 class `BaseChronology`
  Returns:
    the chronology in UTC

### withZone

    public Chronology withZone(DateTimeZone zone)

  Gets the Chronology in a specific time zone.

  Specified by:
    `withZone` in class `BaseChronology`
  Parameters:
    `zone` - the zone to get the chronology in, null is default
  Returns:
    the chronology
  See Also:
    `ZonedChronology`

### assemble

    protected void assemble(AssembledChronology.Fields fields)

  Description copied from class: `AssembledChronology`
  Invoked by the constructor and after deserialization to allow subclasses to define all of its supported fields. All unset fields default to unsupported instances.

  Parameters:
    `fields` - container of fields

### getZone

    public DateTimeZone getZone()

  Description copied from class: `BaseChronology`
  Returns the DateTimeZone that this Chronology operates in, or null if unspecified.

  Overrides:
    `getZone` in class `AssembledChronology`
  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 class `AssembledChronology`
  Parameters:
    `year` - year to use
    `monthOfYear` - month to use
    `dayOfMonth` - day of month to use
    `millisOfDay` - 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 class `AssembledChronology`
  Parameters:
    `year` - year to use
    `monthOfYear` - month to use
    `dayOfMonth` - day of month to use
    `hourOfDay` - hour to use
    `minuteOfHour` - minute to use
    `secondOfMinute` - second to use
    `millisOfSecond` - 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 class `BaseChronology`
  Returns:
    a debugging string

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD