jewish-dates-core
v3.0.1
Published
Jewish dates core
Maintainers
Readme
jewish-dates-core
This package is core functionality of react-jewish-datepicker
If you want to create a jewish date picker in vue.js or angular, this is the core dependency.
Installation
yarn add jewish-dates-coreOr with npm
npm i jewish-dates-core --saveFunctions
isValidDate(date: Date | BasicJewishDate) ⇒ boolean
Returns whether a date is a Date object.
| Param | Type |
| ----- | --------------------------- |
| date | Date | BasicJewishDate |
example:
const basicJewishDate: BasicJewishDate = {
day: 13,
monthName: "Elul",
year: 5788,
};
isValidDate(basicJewishDate); // ==> false
isValidDate(new Date()); // ==> truegetHebWeekdays() ⇒ string[]
Returns an array of week days in hebrew.
example:
getHebWeekdays(); // ==> ["א", "ב", "ג", "ד", "ה", "ו", "ש"]getEngWeekdays() ⇒ string[]
Returns an array of week days in english.
example:
getEngWeekdays(); // ==> ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]getWeekdays(isHebrew: boolean) ⇒ string[]
Returns an array of week days corresponding with the isHebrew param.
| Param | Type |
| -------- | --------- |
| isHebrew | boolean |
example:
getWeekdays(true); // ==> ["א", "ב", "ג", "ד", "ה", "ו", "ש"]
getWeekdays(false); // ==> ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]getHebJewishMonthById(monthId: string) ⇒ string
Takes a jewish month name in english and returns the name in hebrew.
| Param | Type |
| ------- | -------- |
| monthId | string |
example:
getHebJewishMonthById("Tishri"); // ==> 'תשרי'getHebJewishMonths() ⇒ IdText[]
Returns an array of jewish months in hebrew.
example:
getHebJewishMonths(); // ==> [{id: "Tishri", text: "תשרי"}, {id: "Cheshvan", text: "חשון"} ...]getEngJewishMonths() ⇒ IdText[]
Returns an array of jewish months in english.
example:
getEngJewishMonths(); // ==> [{id: "Tishri", text: "Tishri"}, {id: "Cheshvan", text: "Cheshvan"} ...]getJewishMonths(year: number, [isHebrew?: boolean]) ⇒ IdText[]
Returns an array of jewish months according to year (regular/leap) and language.
| Param | Type | Default |
| -------- | --------- | ------- |
| year | number | n/a |
| isHebrew | boolean | false |
example:
getJewishMonths(5781, true); // ==> [... {id: "AdarI", text: "אדר"}, {id: "Nisan", text: "ניסן"} ...] regular year months in henrew
getJewishMonths(5782); // ==> [... {id: "AdarI", text: "AdarI"}, {id: "AdarII", text: "AdarII"} ...] leap year months in englishgetJewishYears(year: number) ⇒ number[]
Takes a number of a jewish year and returns array of 200 years around it.
| Param | Type |
| ----- | -------- |
| year | number |
example:
getJewishYears(5781); // ==> [5681, 5682, ... 5781, ... 5880, 5881]
getJewishYears(5781).length; // ==> 201getPrevMonth(basicJewishMonthInfo: BasicJewishMonthInfo) ⇒ BasicJewishMonthInfo
Takes a BasicJewishMonthInfo object and returns the equivalent of prev month.
| Param | Type |
| -------------------- | ---------------------- |
| basicJewishMonthInfo | BasicJewishMonthInfo |
example:
const tishriInfo: BasicJewishMonthInfo = {
isHebrew: false,
month: "Tishri",
year: 5782,
};
getPrevMonth(tishriInfo); // ==> {isHebrew: false, month: 'Elul', year: 5781}getNextMonth(basicJewishMonthInfo: BasicJewishMonthInfo) ⇒ BasicJewishMonthInfo
Takes a BasicJewishMonthInfo object and returns the equivalent of next month.
| Param | Type |
| -------------------- | ---------------------- |
| basicJewishMonthInfo | BasicJewishMonthInfo |
example:
const elulInfo: BasicJewishMonthInfo = {
isHebrew: true,
month: "Elul",
year: 5781,
};
getNextMonth(elulInfo); // ==> {isHebrew: true, month: 'Tishri', year: 5782}getGregDate(props: BasicJewishDate) ⇒ Date
Converts BasicJewishDate object to gregorian date.
| Param | Type |
| ----- | ----------------- |
| props | BasicJewishDate |
example:
const basicJewishDate: BasicJewishDate = {
day: 13,
monthName: "Elul",
year: 5781,
};
getGregDate(basicJewishDate); // ==> Sat Aug 21 2021 00:00:00 GMT+0300 (שעון ישראל (קיץ))getJewishMonthInfo(date: Date) ⇒ JewishMonthInfo
Takes a gregorian date and returns BasicJewishMonthInfo object.
| Param | Type |
| ----- | ------ |
| date | Date |
example:
getJewishMonthInfo(new Date(2022, 0, 27)); /* ==> { jewishDate: {year: 5782, month: 5, day: 25, monthName: 'Shevat'},
jewishMonth: 5,
startOfJewishMonth: Dayjs(new Date(2022, 0, 3)),
sundayStartOfTheMonth: Dayjs(new Date(2022, 0, 2))} */formatJewishDate(jewishDate: JewishDate) ⇒ string
Takes a BasicJewishDate object and returns a string of the date in english.
| Param | Type |
| ---------- | ------------ |
| jewishDate | JewishDate |
example:
const jewishDate: JewishDate = {
day: 13,
monthName: "Elul",
year: 5781,
month: 13,
};
formatJewishDate(jewishDate); // ==> "13 Elul 5781"formatJewishDateHebrew(jewishDate: JewishDate) ⇒ string
Takes a BasicJewishDate object and returns a string of the date in hebrew.
| Param | Type |
| ---------- | ------------ |
| jewishDate | JewishDate |
example:
const jewishDate: JewishDate = {
day: 13,
monthName: "Elul",
year: 5781,
month: 13,
};
formatJewishDateHebrew(jewishDate); // ==> "י״ג אלול התשפ״א"getJewishDate(date: Date) ⇒ JewishDate
Takes a gregorian date and returns a BasicJewishDate object.
| Param | Type |
| ----- | ------ |
| date | Date |
example:
getJewishDate(new Date(2021, 7, 21)); // ==> {day: 13, monthName: "Elul", year: 5781, month: 13}IsJewishDatesEqual(jewishDate1: JewishDate, jewishDate2: JewishDate) ⇒ boolean
Compares jewish dates returning true if the dates match and false if not.
| Param | Type |
| ----------- | ------------ |
| jewishDate1 | JewishDate |
| jewishDate2 | JewishDate |
example:
const jewishDate1: JewishDate = {
day: 13,
monthName: "Elul",
year: 5781,
month: 13,
};
const jewishDate2: JewishDate = {
day: 14,
monthName: "Shevat",
year: 5781,
month: 5,
};
IsJewishDatesEqual(jewishDate1, jewishDate2); // ==> false
IsJewishDatesEqual(jewishDate2, jewishDate2); // ==> truegetJewishDay(dayjsDate: Dayjs) ⇒ JewishDay
Takes a gregorian date and returns a JewishMonth object.
| Param | Type |
| --------- | ------- |
| dayjsDate | Dayjs |
example:
const date = Dayjs(new Date(2022, 0, 27));
getJewishDay(date); /* ==> { date: 2022-01-26T22:00:00.000Z,
day: 25,
dayjsDate: d {'$L': 'en', '$d': 2022-01-26T22:00:00.000Z, '$y': 2022, '$M': 0, '$D': 27, '$W': 4, '$H': 0, '$m': 0, '$s': 0, '$ms': 0},
isCurrentMonth: false,
jewishDate: { year: 5782, month: 5, day: 25, monthName: 'Shevat' },
jewishDateStr: '25 Shevat 5782',
jewishDateStrHebrew: 'כ״ה שבט התשפ״ב'} */getJewishMonth(date: Date) ⇒ JewishMonth
Takes a gregorian date and returns a JewishMonth object.
| Param | Type |
| ----- | ------ |
| date | Date |
example:
getJewishMonth(new Date(2022, 0, 27)); /* ==> selectedDay: { day: 25, jewishDateStr: '25 Shevat 5782', ...},
jewishMonth: 5,
jewishYear: 5782,
jewishMonthString: 'Shevat',
days: [{day: 29, jewishDateStr: '29 Tevet 5782', ...}, { day: 1, jewishDateStr: '1 Shevat 5782', ...}, ...] */getHolidays(isIsrael: boolean) ⇒ string[]
Returns an array of jewish holiday dates corresponding with the isIsrael param.
| Param | Type |
| ----- | ------ |
| isIsrael | boolean |
example:
getHolidays(true); // ==> ['1 Tishri', '2 Tishri', '10 Tishri', '15 Tishri', '22 Tishri', '15 Nisan', '21 Nisan', '6 Sivan']
getHolidays(false); // ==> ['1 Tishri', '2 Tishri', '10 Tishri', '15 Tishri', '22 Tishri', '15 Nisan', '21 Nisan', '6 Sivan', '16 Tishri', '23 Tishri', '16 Nisan', '22 Nisan', '7 Sivan']getHolidayInfo(date: Date | BasicJewishDate, [isIsrael: boolean], [isHebrew: boolean]) ⇒ JewishHolidayInfo
Returns the full holiday/observance summary for a date, from the jewish-holidays package: isYomTov, isErevYomTov, isCholHaMoed, isShabbat, isErevShabbat, isRoshChodesh, isChanukah, isPurim, isTzom, tzom (the fast observed, when there is one) and holidays (the matched names).
Note that jewish-holidays itself takes an isChutzLaaretz flag and a language code; this wrapper takes isIsrael and isHebrew, to stay consistent with getHolidays, dontSelectHolidays and the datepicker props.
| Param | Type | Default |
| ----- | ------ | ----- |
| date | Date | BasicJewishDate | |
| isIsrael | boolean | true |
| isHebrew | boolean | false |
example:
getHolidayInfo({ day: 15, monthName: 'Nisan', year: 5785 }).holidays; // ==> ['Pesach']
getHolidayInfo({ day: 15, monthName: 'Nisan', year: 5785 }, true, true).holidays; // ==> ['פסח']
getHolidayInfo({ day: 16, monthName: 'Tishri', year: 5785 }, true).isYomTov; // ==> false
getHolidayInfo({ day: 16, monthName: 'Tishri', year: 5785 }, false).isYomTov; // ==> truegetHolidayNames(info: JewishHolidayInfo) ⇒ string[]
Returns the holiday names for a date, already in the language getHolidayInfo was asked for. Returns [] when passed undefined.
| Param | Type |
| ----- | ------ |
| info | JewishHolidayInfo | undefined |
example:
getHolidayNames(getHolidayInfo({ day: 15, monthName: 'Nisan', year: 5785 })); // ==> ['Pesach']
getHolidayNames(getHolidayInfo({ day: 15, monthName: 'Nisan', year: 5785 }, true, true)); // ==> ['פסח']getTzomInfo(info: JewishHolidayInfo) ⇒ JewishTzomInfo | undefined
Returns the fast observed on a date, or undefined when it is not a fast day. Carries the specific fast name and a shift: null when the fast falls on its own calendar date, or "postponed" / "advanced" when it moved off shabat.
| Param | Type |
| ----- | ------ |
| info | JewishHolidayInfo | undefined |
example:
getTzomInfo(getHolidayInfo(new Date(2025, 2, 13))); // ==> { name: 'Taanit Esther', shift: null }
getTzomInfo(getHolidayInfo(new Date(2029, 6, 22))); // ==> { name: 'Tisha BeAv', shift: 'postponed' }
getTzomInfo(getHolidayInfo(new Date(2025, 0, 7))); // ==> undefinedgetHolidayClassNames(info: JewishHolidayInfo) ⇒ string[]
Returns class names describing a date's observances, for styling day cells: hasHoliday, isYomTov, isErevYomTov, isCholHaMoed, isRoshChodesh, isChanukah, isPurim, isTzom.
hasHoliday covers the observances above but not a plain shabat, so it stays a meaningful marker. Shabat is not reported here at all — use getShabbatClassNames, so the two can be toggled independently and neither can emit a class the other already did. This is what the datepicker's showHolidays prop uses.
| Param | Type |
| ----- | ------ |
| info | JewishHolidayInfo | undefined |
getShabbatClassNames(date: Date) ⇒ string[]
Returns ['isShabbat'] for a saturday, ['isErevShabbat'] for a friday, and [] otherwise. Unlike getHolidayClassNames this is a plain day-of-week check with no holiday lookup, which is why the datepicker's showShabbat prop can default to true.
| Param | Type |
| ----- | ------ |
| date | Date |
example:
getShabbatClassNames(new Date(2025, 0, 11)); // ==> ['isShabbat']
getShabbatClassNames(new Date(2025, 0, 10)); // ==> ['isErevShabbat']
getShabbatClassNames(new Date(2025, 0, 7)); // ==> []isShabbatDay(date: Date) ⇒ boolean
Whether the date is a saturday. Keyed off getDay(), the same check dontSelectShabat uses.
isErevShabbatDay(date: Date) ⇒ boolean
Whether the date is a friday.
dontSelectHolidays([isIsrael: boolean]) ⇒ (day: BasicJewishDay) => boolean
Returns a function which can be passed to the canSelect prop, in order to prevent holidays (corresponding with isIsrael param) selection. The returned function takes a BasicJewishDay object, and returns false if it's an holiday and true otherwise.
| Param | Type | Default |
| ----- | ------ | ----- |
| isIsrael | boolean | false |
example: full example here
dontSelectShabat(day: BasicJewishDay) ⇒ boolean
A function to be passed to the canSelect prop, in order to prevent shabat selection. Takes a BasicJewishDay object, and returns false if it's an shabat and true otherwise.
| Param | Type |
| ----- | ------ |
| day | BasicJewishDay |
example: full example here
dontSelectShabatAndHolidays([isIsrael: boolean]) ⇒ (day: BasicJewishDay) => boolean
Returns a function to be passed to the "canSelect" prop. combines dontSelectHolidays and dontSelectShabat in order to prevent both - shabat and holidays selection. The returned function takes a BasicJewishDay object, and returns false if it's an shabat or holiday and true otherwise.
| Param | Type | Default |
| ----- | ------ | ----- |
| isIsrael | boolean | false |
example: full example here
dontSelectOutOfRange(minDate: Date | null, maxDate: Date | null) ⇒ (day: BasicJewishDay) => boolean
Takes min date and max date and returns a function to be passed to the "canSelect" prop, in order to prevent selection out of the supplied range. The returned function takes a BasicJewishDay object, and returns true if it's within range (min date and max date included) and false otherwise.
You can pass a date only for one of the params and null to the other. In this case, the selectable range will be up to max date or from min date.
| Param | Type |
| ----- | ------ |
| minDate | Date | null |
| maxDate | Date | null |
example: full example here
addDates(date: BasicJewishDate | Date, numDays: number) ⇒ Date
Takes a BasicJewishDate object or a Date, adds a date interval (numDays) to the date and then returns the new date.
| Param | Type |
| ----- | ------ |
| date | BasicJewishDate | Date |
| numDays | number |
example:
const date = new Date(2022, 3, 17);
addDates(date, 3)) // => Wed Apr 20 2022 00:00:00 GMT+0300 (שעון ישראל (קיץ))subtractDates(date: BasicJewishDate | Date, numDays: number) ⇒ Date
Takes a BasicJewishDate object or a Date, subtracts a date interval (numDays) from the date and then returns the new date.
| Param | Type |
| ----- | ------ |
| date | BasicJewishDate | Date |
| numDays | number |
example:
const basicJewishDate: BasicJewishDate = {
day: 13,
monthName: "Elul",
year: 5781,
};
subtractDates(basicJewishDate, 4)) // => Tue Aug 17 2021 00:00:00 GMT+0300 (שעון ישראל (קיץ))License: MIT.
