HebrewCalendar

open class HebrewCalendar : Calendar
kotlin.Any
   ↳ android.icu.util.Calendar
   ↳ android.icu.util.HebrewCalendar

HebrewCalendar is a subclass of Calendar that that implements the traditional Hebrew calendar. This is the civil calendar in Israel and the liturgical calendar of the Jewish faith worldwide.

The Hebrew calendar is lunisolar and thus has a number of interesting properties that distinguish it from the Gregorian. Months start on the day of (an arithmetic approximation of) each new moon. Since the solar year (approximately 365.24 days) is not an even multiple of the lunar month (approximately 29.53 days) an extra "leap month" is inserted in 7 out of every 19 years. To make matters even more interesting, the start of a year can be delayed by up to three days in order to prevent certain holidays from falling on the Sabbath and to prevent certain illegal year lengths. Finally, the lengths of certain months can vary depending on the number of days in the year.

The leap month is known as "Adar 1" and is inserted between the months of Shevat and Adar in leap years. Since the leap month does not come at the end of the year, calculations involving month numbers are particularly complex. Users of this class should make sure to use the roll and add methods rather than attempting to perform date arithmetic by manipulating the fields directly.

Note: In the traditional Hebrew calendar, days start 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.

If you are interested in more information on the rules behind the Hebrew calendar, see one of the following references:

This class should not be subclassed.

HebrewCalendar usually should be instantiated using android.icu.util.Calendar#getInstance(ULocale) passing in a ULocale with the tag "@calendar=hebrew".


Requires API level 24 (Android 7.0, Nougat)

Summary

Constants
static Int

Constant for the Adar, the 7th month of the Hebrew year.

static Int

Constant for Adar I, the 6th month of the Hebrew year (present in leap years only).

static Int

Constant for Av, the 12th month of the Hebrew year.

static Int

Constant for Elul, the 13th month of the Hebrew year.

static Int

Constant for Heshvan, the 2nd month of the Hebrew year.

static Int

Constant for Iyar, the 9th month of the Hebrew year.

static Int

Constant for Kislev, the 3rd month of the Hebrew year.

static Int

Constant for Nisan, the 8th month of the Hebrew year.

static Int

Constant for Shevat, the 5th month of the Hebrew year.

static Int

Constant for Sivan, the 10th month of the Hebrew year.

static Int

Constant for Tammuz, the 11th month of the Hebrew year.

static Int

Constant for Tevet, the 4th month of the Hebrew year.

static Int

Constant for Tishri, the 1st month of the Hebrew year.

Inherited constants
Public constructors

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

<init>(zone: TimeZone!)

Constructs a HebrewCalendar based on the current time in the given time zone with the default FORMAT locale.

<init>(aLocale: Locale!)

Constructs a HebrewCalendar based on the current time in the default time zone with the given locale.

<init>(locale: ULocale!)

Constructs a HebrewCalendar based on the current time in the default time zone with the given locale.

<init>(zone: TimeZone!, aLocale: Locale!)

Constructs a HebrewCalendar based on the current time in the given time zone with the given locale.

<init>(zone: TimeZone!, locale: ULocale!)

Constructs a HebrewCalendar based on the current time in the given time zone with the given locale.

<init>(year: Int, month: Int, date: Int)

Constructs a HebrewCalendar with the given date set in the default time zone with the default FORMAT locale.

<init>(date: Date!)

Constructs a HebrewCalendar with the given date set in the default time zone with the default FORMAT locale.

<init>(year: Int, month: Int, date: Int, hour: Int, minute: Int, second: Int)

Constructs a HebrewCalendar with the given date and time set for the default time zone with the default FORMAT locale.

Public methods
open Unit
add(field: Int, amount: Int)

Add a signed amount to a specified field, using this calendar's rules.

open Unit
roll(field: Int, amount: Int)

Rolls (up/down) a specified amount time on the given field.

open String!

[icu] Returns the calendar type name string for this Calendar object.

Protected methods
open Int

Returns the number of days in the given Hebrew year
Requires API level 24 (Android 7.0, Nougat)

open Int


Requires API level 24 (Android 7.0, Nougat)

open Unit

Subclasses may override this method to compute several fields specific to each calendar system.

open Int
handleComputeMonthStart(eyear: Int, month: Int, useMonth: Boolean)

Return JD of start of given month/year.

open Int
handleGetMonthLength(extendedYear: Int, month: Int)

Returns the length of the given month in the given year
Requires API level 24 (Android 7.0, Nougat)

open Int
handleGetLimit(field: Int, limitType: Int)


Requires API level 24 (Android 7.0, Nougat)

Inherited functions
Inherited properties

Constants

ADAR

added in API level 24
static val ADAR: Int

Constant for the Adar, the 7th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 6

ADAR_1

added in API level 24
static val ADAR_1: Int

Constant for Adar I, the 6th month of the Hebrew year (present in leap years only). In non-leap years, the calendar jumps from Shevat (5th month) to Adar (7th month).
Requires API level 24 (Android 7.0, Nougat)

Value: 5

AV

added in API level 24
static val AV: Int

Constant for Av, the 12th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 11

ELUL

added in API level 24
static val ELUL: Int

Constant for Elul, the 13th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 12

HESHVAN

added in API level 24
static val HESHVAN: Int

Constant for Heshvan, the 2nd month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 1

IYAR

added in API level 24
static val IYAR: Int

Constant for Iyar, the 9th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 8

KISLEV

added in API level 24
static val KISLEV: Int

Constant for Kislev, the 3rd month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 2

NISAN

added in API level 24
static val NISAN: Int

Constant for Nisan, the 8th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 7

SHEVAT

added in API level 24
static val SHEVAT: Int

Constant for Shevat, the 5th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 4

SIVAN

added in API level 24
static val SIVAN: Int

Constant for Sivan, the 10th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 9

TAMUZ

added in API level 24
static val TAMUZ: Int

Constant for Tammuz, the 11th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 10

TEVET

added in API level 24
static val TEVET: Int

Constant for Tevet, the 4th month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 3

TISHRI

added in API level 24
static val TISHRI: Int

Constant for Tishri, the 1st month of the Hebrew year.
Requires API level 24 (Android 7.0, Nougat)

Value: 0

Public constructors

<init>

HebrewCalendar()

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

See Also

<init>

HebrewCalendar(zone: TimeZone!)

Constructs a HebrewCalendar based on the current time in the given time zone with the default FORMAT locale.

Parameters
zone TimeZone!: The time zone for the new calendar.

See Also

<init>

HebrewCalendar(aLocale: Locale!)

Constructs a HebrewCalendar based on the current time in the default time zone with the given locale.

Parameters
aLocale Locale!: The locale for the new calendar.

<init>

HebrewCalendar(locale: ULocale!)

Constructs a HebrewCalendar based on the current time in the default time zone with the given locale.

Parameters
locale ULocale!: The locale for the new calendar.

<init>

HebrewCalendar(zone: TimeZone!, aLocale: Locale!)

Constructs a HebrewCalendar based on the current time in the given time zone with the given locale.

Parameters
zone TimeZone!: The time zone for the new calendar.
aLocale TimeZone!: The locale for the new calendar.

<init>

HebrewCalendar(zone: TimeZone!, locale: ULocale!)

Constructs a HebrewCalendar based on the current time in the given time zone with the given locale.

Parameters
zone TimeZone!: The time zone for the new calendar.
locale TimeZone!: The locale for the new calendar.

<init>

HebrewCalendar(year: Int, month: Int, date: Int)

Constructs a HebrewCalendar with the given date set in the default time zone with the default FORMAT locale.

Parameters
year Int: The value used to set the calendar's YEAR time field.
month Int: The value used to set the calendar's MONTH time field. The value is 0-based. e.g., 0 for Tishri.
date Int: The value used to set the calendar's DATE time field.

See Also

<init>

HebrewCalendar(date: Date!)

Constructs a HebrewCalendar 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.

See Also

<init>

HebrewCalendar(year: Int, month: Int, date: Int, hour: Int, minute: Int, second: Int)

Constructs a HebrewCalendar 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 calendar's YEAR time field.
month Int: The value used to set the calendar's MONTH time field. The value is 0-based. e.g., 0 for Tishri.
date Int: The value used to set the calendar's DATE time field.
hour Int: The value used to set the calendar's HOUR_OF_DAY time field.
minute Int: The value used to set the calendar's MINUTE time field.
second Int: The value used to set the calendar's SECOND time field.

See Also

Public methods

add

added in API level 24
open fun add(field: Int, amount: Int): Unit

Add a signed amount to a specified field, using this calendar's rules. For example, to add three days to the current date, you can call add(Calendar.DATE, 3).

When adding to certain fields, the values of other fields may conflict and need to be changed. For example, when adding one to the MONTH field for the date "30 Av 5758", the DAY_OF_MONTH field must be adjusted so that the result is "29 Elul 5758" rather than the invalid "30 Elul 5758".

This method is able to add to all fields except for ERA, DST_OFFSET, and ZONE_OFFSET.

Note: You should always use roll and add rather than attempting to perform arithmetic operations directly on the fields of a HebrewCalendar. Since the MONTH field behaves discontinuously in non-leap years, simple arithmetic can give invalid results.


Requires API level 24 (Android 7.0, Nougat)

Parameters
field Int: the time field.
amount Int: the amount to add to the field.
Exceptions
IllegalArgumentException if the field is invalid or refers to a field that cannot be handled by this method.

roll

added in API level 24
open fun roll(field: Int, amount: Int): Unit

Rolls (up/down) a specified amount time on the given field. For example, to roll the current date up by three days, you can call roll(Calendar.DATE, 3). If the field is rolled past its maximum allowable value, it will "wrap" back to its minimum and continue rolling. For example, calling roll(Calendar.DATE, 10) on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".

When rolling certain fields, the values of other fields may conflict and need to be changed. For example, when rolling the MONTH field upward by one for the date "30 Av 5758", the DAY_OF_MONTH field must be adjusted so that the result is "29 Elul 5758" rather than the invalid "30 Elul".

This method is able to roll all fields except for ERA, DST_OFFSET, and ZONE_OFFSET. Subclasses may, of course, add support for additional fields in their overrides of roll.

Note: You should always use roll and add rather than attempting to perform arithmetic operations directly on the fields of a HebrewCalendar. Since the MONTH field behaves discontinuously in non-leap years, simple arithmetic can give invalid results.


Requires API level 24 (Android 7.0, Nougat)

Parameters
field Int: the time field.
amount Int: the amount by which the field should be rolled.
Exceptions
IllegalArgumentException if the field is invalid or refers to a field that cannot be handled by this method.

getType

added in API level 24
open fun getType(): String!

[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
Requires API level 24 (Android 7.0, Nougat)
Requires API level 24 (Android 7.0, Nougat)

Return
String!: legacy calendar type name string

Protected methods

handleGetYearLength

added in API level 24
protected open fun handleGetYearLength(eyear: Int): Int

Returns the number of days in the given Hebrew year
Requires API level 24 (Android 7.0, Nougat)

handleGetExtendedYear

added in API level 24
protected open fun handleGetExtendedYear(): Int


Requires API level 24 (Android 7.0, Nougat)

Return
Int: the extended year

handleComputeFields

added in API level 24
protected open fun handleComputeFields(julianDay: Int): Unit

Subclasses may override this method to compute several fields specific to each calendar system. These are:

  • ERA
  • YEAR
  • MONTH
  • DAY_OF_MONTH
  • DAY_OF_YEAR
  • EXTENDED_YEAR
Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields, which will be set when this method is called. Subclasses can also call the getGregorianXxx() methods to obtain Gregorian calendar equivalents for the given Julian day.

In addition, subclasses should compute any subclass-specific fields, that is, fields from BASE_FIELD_COUNT to getFieldCount() - 1.
Requires API level 24 (Android 7.0, Nougat)

handleComputeMonthStart

added in API level 24
protected open fun handleComputeMonthStart(eyear: Int, month: Int, useMonth: Boolean): Int

Return JD of start of given month/year.
Requires API level 24 (Android 7.0, Nougat)

Parameters
eyear Int: the extended year
month Int: the zero-based month, or 0 if useMonth is false
useMonth Int: 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
Return
Int: the Julian day number of the day before the first day of the given month and year

handleGetMonthLength

added in API level 24
protected open fun handleGetMonthLength(extendedYear: Int, month: Int): Int

Returns the length of the given month in the given year
Requires API level 24 (Android 7.0, Nougat)

handleGetLimit

added in API level 24
protected open fun handleGetLimit(field: Int, limitType: Int): Int


Requires API level 24 (Android 7.0, Nougat)

Parameters
field Int: one of the above field numbers
limitType Int: one of MINIMUM, GREATEST_MINIMUM, LEAST_MAXIMUM, or MAXIMUM