Class Zmanim

Calculate halachic times (zmanim / זְמַנִּים) for a given day and location. Calculations are available for tzeit / tzais (nightfall), shkiah (sunset) and more.

Zmanim are estimated using an algorithm published by the US National Oceanic and Atmospheric Administration. The NOAA solar calculator is based on equations from Astronomical Algorithms by Jean Meeus.

The sunrise and sunset results are theoretically accurate to within a minute for locations between +/- 72° latitude, and within 10 minutes outside of those latitudes. However, due to variations in atmospheric composition, temperature, pressure and conditions, observed values may vary from calculations. https://gml.noaa.gov/grad/solcalc/calcdetails.html

const {GeoLocation, Zmanim} = require('@hebcal/core');
const latitude = 41.822232;
const longitude = -71.448292;
const tzid = 'America/New_York';
const friday = new Date(2023, 8, 8);
const gloc = new GeoLocation(null, latitude, longitude, 0, tzid);
const zmanim = new Zmanim(gloc, friday, false);
const candleLighting = zmanim.sunsetOffset(-18, true);
const timeStr = Zmanim.formatISOWithTimeZone(tzid, candleLighting);

Constructors

  • Initialize a Zmanim instance.

    Parameters

    • gloc: GeoLocation

      GeoLocation including latitude, longitude, and timezone

    • date: HDate | Date

      Regular or Hebrew Date. If date is a regular Date, hours, minutes, seconds and milliseconds are ignored.

    • useElevation: boolean

      use elevation for calculations (default false). If true, use elevation to affect the calculation of all sunrise/sunset based zmanim. Note: there are some zmanim such as degree-based zmanim that are driven by the amount of light in the sky and are not impacted by elevation. These zmanim intentionally do not support elevation adjustment.

    Returns Zmanim

Methods

  • Dawn – Alot haShachar; Sun is 16.1° below the horizon in the morning. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Rabbeinu Tam holds that bein hashmashos is a specific time between sunset and tzeis hakochavim. One opinion on how to calculate this time is that it is 13.5 minutes before tzies 7.083. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Midday – Chatzot; Sunrise plus 6 halachic hours

    Returns Date

  • Midnight – Chatzot; Sunset plus 6 halachic hours. If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Civil dawn; Sun is 6° below the horizon in the morning. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Civil dusk; Sun is 6° below the horizon in the evening. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Returns true if elevation adjustment is enabled for zmanim support elevation adjustment

    Returns boolean

  • Returns sunset for the previous day. If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Earliest Mincha – Mincha Gedola (GRA); Sunrise plus 6.5 halachic hours. If elevation is enabled, this function will include elevation in the calculation.

    This method returns the latest mincha gedola, the earliest time one can pray mincha that is 6.5 shaos zmaniyos (solar hours) after sunrise or sea level sunrise (depending on the useElevation setting), according to the GRA.

    The Ramba"m is of the opinion that it is better to delay mincha until mincha ketana while the Ra"sh, Tur, GRA and others are of the opinion that mincha can be prayed lechatchila starting at mincha gedola.

    Returns Date

  • Earliest Mincha – Mincha Gedola (MGA); Sunrise plus 6.5 halachic hours. If elevation is enabled, this function will include elevation in the calculation.

    This method returns the time of mincha gedola according to the Magen Avraham with the day starting 72 minutes before sunrise and ending 72 minutes after sunset. This is the earliest time to pray mincha.

    Returns Date

  • Preferable earliest time to recite Minchah – Mincha Ketana; Sunrise plus 9.5 halachic hours. If elevation is enabled, this function will include elevation in the calculation.

    This method returns mincha ketana, the preferred earliest time to pray mincha in the opinion of the Rambam and others, that is 9.5 shaos zmaniyos (solar hours) after sunrise or sea level sunrise (depending on the useElevation setting), according to the GRA.

    Returns Date

  • This method returns the time of mincha ketana according to the Magen Avraham with the day starting 72 minutes before sunrise and ending 72 minutes after sunset. This is the preferred earliest time to pray mincha according to the opinion of the Rambam and others.

    If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Earliest talis & tefillin – Misheyakir; Sun is 11.5° below the horizon in the morning. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Earliest talis & tefillin – Misheyakir Machmir; Sun is 10.2° below the horizon in the morning. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Plag haMincha; Sunrise plus 10.75 halachic hours. If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon). This function does not support elevation adjustment.

    Returns Date

  • When the upper edge of the Sun disappears below the horizon (0.833° below horizon). This function does not support elevation adjustment.

    Returns Date

  • Enables or disables elevation adjustment for zmanim support elevation adjustment

    Parameters

    • useElevation: boolean

    Returns void

  • Latest Shema (Gra); Sunrise plus 3 halachic hours, according to the Gra. If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham. Based on the opinion of the MGA that the day is calculated from dawn being fixed 72 minutes before sea-level sunrise, and nightfall is fixed 72 minutes after sea-level sunset.

    Returns Date

  • Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham. Based on the opinion of the MGA that the day is calculated from dawn to nightfall with both being 16.1° below the horizon.

    Returns Date

  • Latest Shema (MGA); Sunrise plus 3 halachic hours, according to Magen Avraham. Based on the opinion of the MGA that the day is calculated from dawn to nightfall with both being 19.8° below the horizon.

    This calculation is based on the position of the sun 90 minutes after sunset in Jerusalem around the equinox / equilux which calculates to 19.8° below geometric zenith. https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/

    Returns Date

  • Latest Shacharit (Gra); Sunrise plus 4 halachic hours, according to the Gra.

    This method returns the latest zman tfila (time to recite shema in the morning) that is 4 shaos zmaniyos (solar hours) after sunrise or sea level sunrise (depending on the useElevation setting), according to the GRA.

    If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham

    Returns Date

  • Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham. Based on the opinion of the MGA that the day is calculated from dawn to nightfall with both being 16.1° below the horizon.

    Returns Date

  • Latest Shacharit (MGA); Sunrise plus 4 halachic hours, according to Magen Avraham. Based on the opinion of the MGA that the day is calculated from dawn to nightfall with both being 19.8° below the horizon.

    This calculation is based on the position of the sun 90 minutes after sunset in Jerusalem around the equinox / equilux which calculates to 19.8° below geometric zenith. https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/

    Returns Date

  • Upper edge of the Sun appears over the eastern horizon in the morning (0.833° above horizon) If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Returns sunrise + offset minutes (either positive or negative). If elevation is enabled, this function will include elevation in the calculation unless forceSeaLevel is true.

    Parameters

    • offset: number

      minutes

    • roundMinute: boolean = true

      round time to nearest minute (default true)

    • forceSeaLevel: boolean = false

      use sea-level sunrise (default false)

    Returns Date

  • When the upper edge of the Sun disappears below the horizon (0.833° below horizon). If elevation is enabled, this function will include elevation in the calculation.

    Returns Date

  • Returns sunset + offset minutes (either positive or negative). If elevation is enabled, this function will include elevation in the calculation unless forceSeaLevel is true.

    Parameters

    • offset: number

      minutes

    • roundMinute: boolean = true

      round time to nearest minute (default true)

    • forceSeaLevel: boolean = false

      use sea-level sunset (default false)

    Returns Date

  • Convenience function to get the time when sun is above or below the horizon for a certain angle (in degrees). This function does not support elevation adjustment.

    Parameters

    • angle: number
    • rising: boolean

    Returns Date

  • Parameters

    • Optionalangle: number = 8.5

      optional time for solar depression. Default is 8.5 degrees for 3 small stars, use 7.083 degrees for 3 medium-sized stars. Because degree-based functions estimate the amount of light in the sky, the result is not impacted by elevation.

    Returns Date

  • Returns a string like "2022-04-01T13:06:00-11:00"

    Parameters

    • tzid: string
    • date: Date

    Returns string

  • Uses timeFormat to return a date like '20:34'

    Parameters

    • dt: Date
    • timeFormat: DateTimeFormat

    Returns string

  • Returns the Hebrew date relative to the specified location and Gregorian date, taking into consideration whether the time is before or after sunset.

    For example, if the given date and is 2024-09-22T10:35 (before sunset), and sunset for the specified location is 19:04, then this function would return a Hebrew date of 19th of Elul, 5784. If the given date is the same Gregorian day after sunset (for example 2024-09-22T20:07), this function would return a Hebrew date of 20th of Elul, 5784.

    Parameters

    Returns HDate

    const {GeoLocation, Zmanim, HDate} = require('@hebcal/core');
    const latitude = 48.85341;
    const longitude = 2.3488;
    const timezone = 'Europe/Paris';
    const gloc = new GeoLocation(null, latitude, longitude, 0, timezone);
    const before = Zmanim.makeSunsetAwareHDate(gloc, new Date('2024-09-22T17:38:46.123Z'), false);
    console.log(before.toString()); // '19 Elul 5784'
    const after = Zmanim.makeSunsetAwareHDate(gloc, new Date('2024-09-22T23:45:18.345Z'), false);
    console.log(after.toString()); // '20 Elul 5784'
  • Discards seconds, rounding to nearest minute.

    Parameters

    • dt: Date

    Returns Date

  • Get offset string (like "+05:00" or "-08:00") from tzid (like "Europe/Moscow")

    Parameters

    • tzid: string
    • date: Date

    Returns string