Package com.kosherjava.zmanim
Class ZmanimCalendar
java.lang.Object
com.kosherjava.zmanim.AstronomicalCalendar
com.kosherjava.zmanim.ZmanimCalendar
- All Implemented Interfaces:
Cloneable
- Direct Known Subclasses:
ComplexZmanimCalendar
The ZmanimCalendar is a specialized calendar that can calculate sunrise, sunset and Jewish zmanim
(religious times) for prayers and other Jewish religious duties. This class contains the main functionality of the
Zmanim library. For a much more extensive list of zmanim, use the
ComplexZmanimCalendar
that
extends this class. See documentation for the ComplexZmanimCalendar
and AstronomicalCalendar
for
simple examples on using the API.
Elevation based zmanim (even sunrise and sunset) should not be used lekula without the guidance
of a posek. According to Rabbi Dovid Yehudah Bursztyn in his
Zmanim Kehilchasam, 7th edition chapter 2, section 7 (pages 181-182)
and section 9 (pages 186-187), no zmanim besides sunrise and sunset should use elevation. However, Rabbi Yechiel
Avrahom Zilber in the Birur Halacha Vol. 6 Ch. 58 Pages
34 and
42 is of the opinion that elevation should be
accounted for in zmanim calculations. Related to this, Rabbi Yaakov Karp in Shimush Zekeinim, Ch. 1, page 17 states that obstructing horizons should
be factored into zmanim calculations. The setting defaults to false (elevation will not be used for
zmanim calculations besides sunrise and sunset), unless the setting is changed to true in setUseElevation(boolean)
. This will impact sunrise and sunset-based zmanim such as AstronomicalCalendar.getSunrise()
,
AstronomicalCalendar.getSunset()
, getSofZmanShmaGRA()
, alos-based zmanim such as getSofZmanShmaMGA()
that are based on a fixed offset of sunrise or sunset and zmanim based on a percentage of the day such as
ComplexZmanimCalendar.getSofZmanShmaMGA90MinutesZmanis()
that are based on sunrise and sunset. Even when set to
true it will not impact zmanim that are a degree-based offset of sunrise and sunset, such as ComplexZmanimCalendar.getSofZmanShmaMGA16Point1Degrees()
or ComplexZmanimCalendar.getSofZmanShmaBaalHatanya()
since
these zmanim are not linked to sunrise or sunset times (the calculations are based on the astronomical definition of
sunrise and sunset calculated in a vacuum with the solar radius above the horizon), and are therefore not impacted by the use
of elevation.
For additional information on the halachic impact of elevation on zmanim see:
- Zmanei Halacha Lema'aseh 4th edition by Rabbi Yedidya Manat. See section 1, pages 11-12 for a very concise write-up, with details in section 2, pages 37 - 63 and 133 - 151.
- Zmanim Kehilchasam 7th edition, by Rabbi Dovid Yehuda Burstein, vol 1, chapter 2, pages 95 - 188.
- Hazmanim Bahalacha by Rabbi Chaim Banish , perek 7, pages 53 - 63.
Note: It is important to read the technical notes on top of the AstronomicalCalculator
documentation
before using this code.
I would like to thank Rabbi Yaakov Shakow, the author of Luach Ikvei Hayom who spent a considerable amount of time reviewing, correcting and making suggestions on the documentation in this library.
Disclaimer:
I did my best to get accurate results, but please double-check before relying on these zmanim for halacha lema'aseh.- Author:
- © Eliyahu Hershfeld 2004 - 2023
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate double
The default Shabbos candle lighting offset is 18 minutes.private boolean
Is astronomical chatzos used for zmanim calculations.private boolean
Is astronomical chatzos used for zmanim calculations besides chatzos itself for enhanced accuracy.private boolean
Is elevation factored in for some zmanim (seeisUseElevation()
for additional information).protected static final double
The zenith of 16.1° below geometric zenith (90°).protected static final double
The zenith of 8.5° below geometric zenith (90°).Fields inherited from class com.kosherjava.zmanim.AstronomicalCalendar
ASTRONOMICAL_ZENITH, CIVIL_ZENITH, GEOMETRIC_ZENITH, HOUR_MILLIS, MINUTE_MILLIS, NAUTICAL_ZENITH
-
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor will set a defaultGeoLocation()
, a defaultAstronomicalCalculator
and default the calendar to the current date.ZmanimCalendar
(GeoLocation location) A constructor that takes aGeoLocation
as a parameter. -
Method Summary
Modifier and TypeMethodDescriptionMethod to return alos (dawn) calculated using 72 minutes beforesunrise
orsea level sunrise
(depending on theisUseElevation()
setting).Returns alos (dawn) based on the time when the sun is16.1°
below the easterngeometric horizon
beforesunrise
.A method to return candle lighting time, calculated asgetCandleLightingOffset()
minutes beforesea level sunset
.double
A method to get the offset in minutes beforesea level sunset
which is used in calculating candle lighting time.This method returnsAstronomical chatzos
if thecalculator
class used supports it andisUseAstronomicalChatzos()
is set to true or thehalfway point between sunrise and sunset
if it does not support it or it is not configured to use it.Returns chatzos calculated as halfway between sunrise and sunset.protected Date
This method will returnsea level sunrise
ifisUseElevation()
is false (the default), or elevation adjustedAstronomicalCalendar.getSunrise()
if it is true.protected Date
This method will returnsea level sunrise
ifisUseElevation()
is false (the default), or elevation adjustedAstronomicalCalendar.getSunrise()
if it is true.long
getHalfDayBasedShaahZmanis
(Date startOfHalfDay, Date endOfHalfDay) A utility method to calculate the length of a sha'ah zmanis based on 1/6 of a 6 hour day.getHalfDayBasedZman
(Date startOfHalfDay, Date endOfHalfDay, double hours) A utility method to calculate zmanim based on Rav Moshe Feinstein and others as calculated in MTJ, Yeshiva of Staten Island, and Camp Yeshiva of Staten Island and other calendars.This method returns the latest mincha gedola,the earliest time one can pray mincha that is 6.5 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA.getMinchaGedola
(Date startOfDay, Date endOfDay) A generic method for calculating the latest mincha gedola (the earliest time to recite the mincha1 prayers) that is 6.5 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method.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) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA.getMinchaKetana
(Date startOfDay, Date endOfDay) A generic method for calculating mincha ketana, (the preferred time to recite the mincha prayers in the opinion of the Rambam and others) that is 9.5 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method.double
getPercentOfShaahZmanisFromDegrees
(double degrees, boolean sunset) A utility method that returns the percentage of a shaah zmanis after sunset (or before sunrise) for a given degree offset.This method returns plag hamincha, that is 10.75 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA.getPlagHamincha
(Date startOfDay, Date endOfDay) A generic method for calculating plag hamincha (the earliest time that Shabbos can be started) that is 10.75 hours after the start of the day, (or 1.25 hours before the end of the day) based on the start and end of the day passed to the method.getSamuchLeMinchaKetana
(Date startOfDay, Date endOfDay) A generic method for calculating samuch lemincha ketana, / near mincha ketana time that is half an hour beforegetMinchaKetana(Date, Date)
or 9 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method.getShaahZmanisBasedZman
(Date startOfDay, Date endOfDay, double hours) A generic utility method for calculating any shaah zmanis (temporal hour) based zman with the day defined as the start and end of day (or night) and the number of shaahos zmaniyos passed to the method.long
A method that returns a shaah zmanis (temporal hour
) according to the opinion of the GRA.long
A method that returns a shaah zmanis (temporal hour) according to the opinion of the Magen Avraham (MGA) based on a 72 minutes alos and tzais.getSofZmanShma
(Date startOfDay, Date endOfDay) A generic method for calculating the latest zman krias shema (time to recite shema in the morning) that is 3 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method.This method returns the latest zman krias shema (time to recite shema in the morning) that is 3 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA.This method returns the latest zman krias shema (time to recite shema in the morning) that is 3 *shaos zmaniyos
(solar hours) aftergetAlos72()
, according to the Magen Avraham (MGA).getSofZmanTfila
(Date startOfDay, Date endOfDay) A generic method for calculating the latest zman tfilah (time to recite the morning prayers) that is 4 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method.This method returns the latest zman tfila (time to recite shema in the morning) that is 4 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), 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) aftergetAlos72()
, according to the Magen Avraham (MGA).getTzais()
A method that returns tzais (nightfall) when the sun is8.5°
below thegeometric horizon
(90°) aftersunset
, a time that Rabbi Meir Posen in his the Ohr Meir calculated that 3 small stars are visible, which is later than the required 3 medium stars.This method returns the tzais (nightfall) based on the opinion of Rabbeinu Tam that tzais hakochavim is calculated as 72 minutes, the time it takes to walk 4 Mil at 18 minutes a Mil.boolean
isAssurBemlacha
(Date currentTime, Date tzais, boolean inIsrael) This is a utility method to determine if the current Date (date-time) passed in has a melacha (work) prohibition.boolean
Isastronomical chatzos
used forgetChatzos()
for enhanced accuracy.boolean
Is astronomical chatzos used for zmanim calculations besides chatzos itself for enhanced accuracy.boolean
Is elevation above sea level calculated for times besides sunrise and sunset.void
setCandleLightingOffset
(double candleLightingOffset) A method to set the offset in minutes beforesea level sunset
that is used in calculating candle lighting time.void
setUseAstronomicalChatzos
(boolean useAstronomicalChatzos) Sets if astronomical chatzos should be used in calculations of other zmanim for enhanced accuracy.void
setUseAstronomicalChatzosForOtherZmanim
(boolean useAstronomicalChatzosForOtherZmanim) Sets if astronomical chatzos should be used in calculations of other zmanim for enhanced accuracy.void
setUseElevation
(boolean useElevation) Sets whether elevation above sea level is factored into zmanim calculations for times besides sunrise and sunset.Methods inherited from class com.kosherjava.zmanim.AstronomicalCalendar
clone, equals, getAstronomicalCalculator, getBeginAstronomicalTwilight, getBeginCivilTwilight, getBeginNauticalTwilight, getCalendar, getDateFromTime, getEndAstronomicalTwilight, getEndCivilTwilight, getEndNauticalTwilight, getGeoLocation, getLocalMeanTime, getSeaLevelSunrise, getSeaLevelSunset, getSolarMidnight, getSunrise, getSunriseOffsetByDegrees, getSunriseSolarDipFromOffset, getSunset, getSunsetOffsetByDegrees, getSunsetSolarDipFromOffset, getSunTransit, getSunTransit, getTemporalHour, getTemporalHour, getTimeOffset, getTimeOffset, getUTCSeaLevelSunrise, getUTCSeaLevelSunset, getUTCSunrise, getUTCSunset, hashCode, setAstronomicalCalculator, setCalendar, setGeoLocation, toJSON, toString
-
Field Details
-
useElevation
Is elevation factored in for some zmanim (seeisUseElevation()
for additional information).- See Also:
-
useAstronomicalChatzos
Is astronomical chatzos used for zmanim calculations. The default value oftrue
will keep the standard astronomical chatzos calculation, while setting it tofalse
will use half of a solar day calculation for chatzos. -
useAstronomicalChatzosForOtherZmanim
Is astronomical chatzos used for zmanim calculations besides chatzos itself for enhanced accuracy. The default value offalse
will keep the standard start to end of day calculations, while setting it totrue
will use half of a solar day calculation for zmanim. -
ZENITH_16_POINT_1
The zenith of 16.1° below geometric zenith (90°). This calculation is used for determining alos (dawn) and tzais (nightfall) in some opinions. It is based on the calculation that the time between dawn and sunrise (and sunset to nightfall) is 72 minutes, the time that is takes to walk 4 mil at 18 minutes a mil (Rambam and others). The sun's position at 72 minutes beforesunrise
in Jerusalem around the equinox / equilux is 16.1° belowgeometric zenith
.- See Also:
-
getAlosHashachar()
ComplexZmanimCalendar.getAlos16Point1Degrees()
ComplexZmanimCalendar.getTzais16Point1Degrees()
ComplexZmanimCalendar.getSofZmanShmaMGA16Point1Degrees()
ComplexZmanimCalendar.getSofZmanTfilaMGA16Point1Degrees()
ComplexZmanimCalendar.getMinchaGedola16Point1Degrees()
ComplexZmanimCalendar.getMinchaKetana16Point1Degrees()
ComplexZmanimCalendar.getPlagHamincha16Point1Degrees()
ComplexZmanimCalendar.getPlagAlos16Point1ToTzaisGeonim7Point083Degrees()
ComplexZmanimCalendar.getSofZmanShmaAlos16Point1ToSunset()
- Constant Field Values
-
ZENITH_8_POINT_5
The zenith of 8.5° below geometric zenith (90°). This calculation is used for calculating alos (dawn) and tzais (nightfall) in some opinions. This calculation is based on the position of the sun 36 minutes aftersunset
in Jerusalem around the equinox / equilux, which is 8.5° belowgeometric zenith
. The Ohr Meir considers this the time that 3 small stars are visible, which is later than the required 3 medium stars. -
candleLightingOffset
The default Shabbos candle lighting offset is 18 minutes. This can be changed via thesetCandleLightingOffset(double)
and retrieved by thegetCandleLightingOffset()
.
-
-
Constructor Details
-
ZmanimCalendar
public ZmanimCalendar()Default constructor will set a defaultGeoLocation()
, a defaultAstronomicalCalculator
and default the calendar to the current date.- See Also:
-
ZmanimCalendar
A constructor that takes aGeoLocation
as a parameter.- Parameters:
location
- the location
-
-
Method Details
-
isUseElevation
Is elevation above sea level calculated for times besides sunrise and sunset. According to Rabbi Dovid Yehuda Bursztyn in his Zmanim Kehilchasam (second edition published in 2007) chapter 2 (pages 186-187) no zmanim besides sunrise and sunset should use elevation. However Rabbi Yechiel Avrahom Zilber in the Birur Halacha Vol. 6 Ch. 58 Pages 34 and 42 is of the opinion that elevation should be accounted for in zmanim calculations. Related to this, Rabbi Yaakov Karp in Shimush Zekeinim, Ch. 1, page 17 states that obstructing horizons should be factored into zmanim calculations.The setting defaults to false (elevation will not be used for zmanim calculations), unless the setting is changed to true insetUseElevation(boolean)
. This will impact sunrise and sunset based zmanim such asAstronomicalCalendar.getSunrise()
,AstronomicalCalendar.getSunset()
,getSofZmanShmaGRA()
, alos based zmanim such asgetSofZmanShmaMGA()
that are based on a fixed offset of sunrise or sunset and zmanim based on a percentage of the day such asComplexZmanimCalendar.getSofZmanShmaMGA90MinutesZmanis()
that are based on sunrise and sunset. It will not impact zmanim that are a degree based offset of sunrise and sunset, such asComplexZmanimCalendar.getSofZmanShmaMGA16Point1Degrees()
orComplexZmanimCalendar.getSofZmanShmaBaalHatanya()
.- Returns:
- if the use of elevation is active
- See Also:
-
setUseElevation
Sets whether elevation above sea level is factored into zmanim calculations for times besides sunrise and sunset. SeeisUseElevation()
for more details.- Parameters:
useElevation
- set to true to use elevation in zmanim calculations- See Also:
-
isUseAstronomicalChatzos
Isastronomical chatzos
used forgetChatzos()
for enhanced accuracy. For example as the day is lengthens, the second half of the day is longer than the first and astronomical chatzos would be a drop earlier than half of the time between sunrise and sunset.- Returns:
- if the use of astronomical chatzos is active.
- See Also:
- TODO:
- In the future, if this is set to true, the following may change to enhance accuracy.
Sof zman Shma GRA
would be calculated as 3 shaaos zmaniyos after sunrise, but the shaaos zmaniyos would be calculated a a 6th of the time between sunrise and chatzos, as opposed to a 12th of the time between sunrise and sunset.mincha gedola
will be calculated as half a shaah zmanis of afternoon hours (a 6th of the time between chatzos and sunset after astronomical chatzos as opposed to 6.5 shaaos zmaniyos after sunrise.Plag hamincha
would be calculated as 4.75 shaaos zmaniyos after astronomical chatzos as opposed to 10.75 shaaos zmaniyos after sunrise. Etc.
-
setUseAstronomicalChatzos
Sets if astronomical chatzos should be used in calculations of other zmanim for enhanced accuracy.- Parameters:
useAstronomicalChatzos
- set to true to use astronomical in chatzos in zmanim calculations.- See Also:
-
isUseAstronomicalChatzosForOtherZmanim
Is astronomical chatzos used for zmanim calculations besides chatzos itself for enhanced accuracy. For example as the day is lengthening (as we approach spring season), the second half of the day is longer than the first and astronomical chatzos would be a drop earlier than half of the time between sunrise and sunset. Conversely, the second half of the day would be shorter in the fall season as the days start getting shorter.- Returns:
- if the use of astronomical chatzos is active.
- See Also:
- TODO:
- In the future, if this is set to true, the following may change to enhance accuracy.
Sof zman Shma GRA
would be calculated as 3 shaaos zmaniyos after sunrise, but the shaaos zmaniyos would be calculated a a 6th of the time between sunrise and chatzos, as opposed to a 12th of the time between sunrise and sunset.mincha gedola
will be calculated as half a shaah zmanis of afternoon hours (a 6th of the time between chatzos and sunset after astronomical chatzos as opposed to 6.5 shaaos zmaniyos after sunrise.Plag hamincha
would be calculated as 4.75 shaaos zmaniyos after astronomical chatzos as opposed to 10.75 shaaos zmaniyos after sunrise. Etc.
-
setUseAstronomicalChatzosForOtherZmanim
Sets if astronomical chatzos should be used in calculations of other zmanim for enhanced accuracy.- Parameters:
useAstronomicalChatzosForOtherZmanim
- set to true to use astronomical in chatzos in zmanim calculations.- See Also:
-
getElevationAdjustedSunrise
This method will returnsea level sunrise
ifisUseElevation()
is false (the default), or elevation adjustedAstronomicalCalendar.getSunrise()
if it is true. This allows relevant zmanim in this and extending classes (such as theComplexZmanimCalendar
) to automatically adjust to the elevation setting.- Returns:
AstronomicalCalendar.getSeaLevelSunrise()
ifisUseElevation()
is false (the default), or elevation adjustedAstronomicalCalendar.getSunrise()
if it is true.- See Also:
-
getElevationAdjustedSunset
This method will returnsea level sunrise
ifisUseElevation()
is false (the default), or elevation adjustedAstronomicalCalendar.getSunrise()
if it is true. This allows relevant zmanim in this and extending classes (such as theComplexZmanimCalendar
) to automatically adjust to the elevation setting.- Returns:
AstronomicalCalendar.getSeaLevelSunset()
ifisUseElevation()
is false (the default), or elevation adjustedAstronomicalCalendar.getSunset()
if it is true.- See Also:
-
getTzais
A method that returns tzais (nightfall) when the sun is8.5°
below thegeometric horizon
(90°) aftersunset
, a time that Rabbi Meir Posen in his the Ohr Meir calculated that 3 small stars are visible, which is later than the required 3 medium stars. See theZENITH_8_POINT_5
constant.- Returns:
- The
Date
of nightfall. If the calculation can't be computed such as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach low enough below the horizon for this calculation, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getAlosHashachar
Returns alos (dawn) based on the time when the sun is16.1°
below the easterngeometric horizon
beforesunrise
. This is based on the calculation that the time between dawn and sunrise (and sunset to nightfall) is 72 minutes, the time that is takes to walk 4 mil at 18 minutes a mil (Rambam and others). The sun's position at 72 minutes beforesunrise
in Jerusalem on the around the equinox / equilux is 16.1° belowAstronomicalCalendar.GEOMETRIC_ZENITH
.- Returns:
- The
Date
of dawn. If the calculation can't be computed such as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach low enough below the horizon for this calculation, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getAlos72
Method to return alos (dawn) calculated using 72 minutes beforesunrise
orsea level sunrise
(depending on theisUseElevation()
setting). This time is based on the time to walk the distance of 4 Mil at 18 minutes a Mil. The 72 minute time (but not the concept of fixed minutes) is based on the opinion that the time of the Neshef (twilight between dawn and sunrise) does not vary by the time of year or location but depends on the time it takes to walk the distance of 4 Mil.- Returns:
- the
Date
representing the time. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getChatzos
This method returnsAstronomical chatzos
if thecalculator
class used supports it andisUseAstronomicalChatzos()
is set to true or thehalfway point between sunrise and sunset
if it does not support it or it is not configured to use it. There are currently twocalculators
available in the API, the defaultNOAA calculator
and theUSNO calculator
. The USNO calculator calculates chatzos as halfway between sunrise and sunset (identical to six shaaos zmaniyos after sunrise), while the NOAACalculator calculates it more accurately asastronomical chatzos
. See The Definition of Chatzos for a detailed explanation of the ways to calculate Chatzos. Since half-day chatzos can benull
in the Arctic on a day when either sunrise or sunset did not happen and astronomical chatzos can be calculated even in that case, even if it is not configured to use astronomical chatzos, if half-day chatzos is null and astronomical chatzos is supported by the calculator, astronomical chatzos will be returned in an effort to not return anull
.- Returns:
- the
Date
of chatzos. If the calculation can't be computed such as in the Arctic Circle where there is at least one day where the sun does not rise, and one where it does not set, and the calculator does not support astronomical calculations (that will never report anull
) anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getChatzosAsHalfDay
Returns chatzos calculated as halfway between sunrise and sunset. Many are of the opinion opinion that chatzos is calculated as the the midpoint betweensea level sunrise
andsea level sunset
, despite it not being the most accurate way to calculate it. A day starting at alos and ending at tzais using the same time or degree offset will also return the same time. In reality due to lengthening or shortening of day, this is not necessarily the exact midpoint of the day, but it is very close. This method allows you to use the NOAACalculator and still calculate chatzos as six shaaos zmaniyos after sunrise. There are currently twocalculators
available in the API, theNOAACalculator
and theSunTimesCalculator
. The SunTimesCalculator calculates chatzos as halfway between sunrise and sunset (and of six shaaos zmaniyos), while the NOAACalculator calculates it as astronomical chatzos that is slightly more accurate. This method allows you to use the NOAACalculator and still calculate chatzos as six shaaos zmaniyos after sunrise. See The Definition of Chatzos for a detailed explanation of the ways to calculate Chatzos.- Returns:
- the
Date
of the latest chatzos. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getSofZmanShma
A generic method for calculating the latest zman krias shema (time to recite shema in the morning) that is 3 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method. The time from the start of day to the end of day are divided into 12 shaos zmaniyos (temporal hours), and the latest zman krias shema is calculated as 3 of those shaos zmaniyos after the beginning of the day. As an example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) to this method will return sof zman krias shema according to the opinion of the GRA.- Parameters:
startOfDay
- the start of day for calculating zman krias shema. This can be sunrise or any alos passed to this method.endOfDay
- the end of day for calculating zman krias shema. This can be sunset or any tzais passed to this method.- Returns:
- the
Date
of the latest zman shema based on the start and end of day times passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getSofZmanShmaGRA
This method returns the latest zman krias shema (time to recite shema in the morning) that is 3 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA. The day is calculated fromsea level sunrise
tosea level sunset
orsunrise
tosunset
(depending on theisUseElevation()
setting).- Returns:
- the
Date
of the latest zman shema according to the GRA. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See the detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getSofZmanShmaMGA
This method returns the latest zman krias shema (time to recite shema in the morning) that is 3 *shaos zmaniyos
(solar hours) aftergetAlos72()
, according to the Magen Avraham (MGA). The day is calculated from 72 minutes beforesea level sunrise
to 72 minutes aftersea level sunset
or from 72 minutes beforesunrise
tosunset
(depending on theisUseElevation()
setting).- Returns:
- the
Date
of the latest zman shema. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getTzais72
This method returns the tzais (nightfall) based on the opinion of Rabbeinu Tam that tzais hakochavim is calculated as 72 minutes, the time it takes to walk 4 Mil at 18 minutes a Mil. According to the Machtzis Hashekel in Orach Chaim 235:3, the Pri Megadim in Orach Chaim 261:2 (see the Biur Halacha) and others (see Hazmanim Bahalacha 17:3 and 17:5) the 72 minutes are standard clock minutes any time of the year in any location. Depending on theisUseElevation()
setting) a 72 minute offset from eithersunset
orsea level sunset
is used.- Returns:
- the
Date
representing 72 minutes after sunset. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getCandleLighting
A method to return candle lighting time, calculated asgetCandleLightingOffset()
minutes beforesea level sunset
. This will return the time for any day of the week, since it can be used to calculate candle lighting time for Yom Tov (mid-week holidays) as well. Elevation adjustments are intentionally not performed by this method, but you can calculate it by passing the elevation adjusted sunset toAstronomicalCalendar.getTimeOffset(Date, long)
.- Returns:
- candle lighting time. If the calculation can't be computed such as in the Arctic Circle where there is at
least one day a year where the sun does not rise, and one where it does not set, a
null
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getSofZmanTfila
A generic method for calculating the latest zman tfilah (time to recite the morning prayers) that is 4 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method. The time from the start of day to the end of day are divided into 12 shaos zmaniyos (temporal hours), and sof zman tfila is calculated as 4 of those shaos zmaniyos after the beginning of the day. As an example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) to this method will return zman tfilah according to the opinion of the GRA.- Parameters:
startOfDay
- the start of day for calculating zman tfilah. This can be sunrise or any alos passed to this method.endOfDay
- the end of day for calculating zman tfilah. This can be sunset or any tzais passed to this method.- Returns:
- the
Date
of the latest zman tfilah based on the start and end of day times passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getSofZmanTfilaGRA
This method returns the latest zman tfila (time to recite shema in the morning) that is 4 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA. The day is calculated fromsea level sunrise
tosea level sunset
orsunrise
tosunset
(depending on theisUseElevation()
setting).- Returns:
- the
Date
of the latest zman tfilah. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getSofZmanTfilaMGA
This method returns the latest zman tfila (time to recite shema in the morning) that is 4 *shaos zmaniyos
(solar hours) aftergetAlos72()
, according to the Magen Avraham (MGA). The day is calculated from 72 minutes beforesea level sunrise
to 72 minutes aftersea level sunset
or from 72 minutes beforesunrise
tosunset
(depending on theisUseElevation()
setting).- Returns:
- the
Date
of the latest zman tfila. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set), anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getMinchaGedola
A generic method for calculating the latest mincha gedola (the earliest time to recite the mincha1 prayers) that is 6.5 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method. The time from the start of day to the end of day are divided into 12 shaos zmaniyos (temporal hours), and mincha gedola is calculated as 6.5 of those shaos zmaniyos after the beginning of the day. As an example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) to this method will return mincha gedola according to the opinion of the GRA. Alternatively, this method usesisUseAstronomicalChatzosForOtherZmanim()
to control if the time is based on 6.5 sha'os zmaniyos into the day mentioned above, or as half an hour zmaniyos based on the second half of the day after chatzos (astronomical chatzos
if supported by thecalculator
andconfigured
orchatzos as half a day
if not.- Parameters:
startOfDay
- the start of day for calculating Mincha gedola. This can be sunrise or any alos passed to this method.endOfDay
- the end of day for calculating Mincha gedola. This can be sunset or any tzais passed to this method.- Returns:
- the
Date
of the time of Mincha gedola based on the start and end of day times passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getMinchaGedola
This method returns the latest mincha gedola,the earliest time one can pray mincha that is 6.5 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA. Mincha gedola is the earliest time one can pray mincha. The Ramba"m is of the opinion that it is better to delay mincha untilmincha ketana
while the Ra"sh, Tur, GRA and others are of the opinion that mincha can be prayed lechatchila starting at mincha gedola. The day is calculated fromsea level sunrise
tosea level sunset
orsunrise
tosunset
(depending on theisUseElevation()
setting).- Returns:
- the
Date
of the time of mincha gedola. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
- TODO:
- Consider adjusting this to calculate the time as half an hour zmaniyos after either
astronomical chatzos
orchatzos as half a day
forcalculators
that support it, based onisUseAstronomicalChatzos()
.
-
getSamuchLeMinchaKetana
A generic method for calculating samuch lemincha ketana, / near mincha ketana time that is half an hour beforegetMinchaKetana(Date, Date)
or 9 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method. The time from the start of day to the end of day are divided into 12 shaos zmaniyos (temporal hours), and samuch lemincha ketana is calculated as 9 of those shaos zmaniyos after the beginning of the day. For example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) to this method will return samuch lemincha ketana according to the opinion of the GRA.- Parameters:
startOfDay
- the start of day for calculating samuch lemincha ketana. This can be sunrise or any alos passed to to this method.endOfDay
- the end of day for calculating samuch lemincha ketana. This can be sunset or any tzais passed to this method.- Returns:
- the
Date
of the time of Mincha ketana based on the start and end of day times passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getMinchaKetana
A generic method for calculating mincha ketana, (the preferred time to recite the mincha prayers in the opinion of the Rambam and others) that is 9.5 * shaos zmaniyos (temporal hours) after the start of the day, calculated using the start and end of the day passed to this method. The time from the start of day to the end of day are divided into 12 shaos zmaniyos (temporal hours), and mincha ketana is calculated as 9.5 of those shaos zmaniyos after the beginning of the day. As an example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) to this method will return mincha ketana according to the opinion of the GRA.- Parameters:
startOfDay
- the start of day for calculating Mincha ketana. This can be sunrise or any alos passed to this method.endOfDay
- the end of day for calculating Mincha ketana. This can be sunset or any tzais passed to this method.- Returns:
- the
Date
of the time of Mincha ketana based on the start and end of day times passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getMinchaKetana
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) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA. For more information on this see the documentation onmincha gedola
. The day is calculated fromsea level sunrise
tosea level sunset
orsunrise
tosunset
(depending on theisUseElevation()
setting.- Returns:
- the
Date
of the time of mincha ketana. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getPlagHamincha
A generic method for calculating plag hamincha (the earliest time that Shabbos can be started) that is 10.75 hours after the start of the day, (or 1.25 hours before the end of the day) based on the start and end of the day passed to the method. The time from the start of day to the end of day are divided into 12 shaos zmaniyos (temporal hours), and plag hamincha is calculated as 10.75 of those shaos zmaniyos after the beginning of the day. As an example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) to this method will return plag mincha according to the opinion of the GRA.- Parameters:
startOfDay
- the start of day for calculating plag. This can be sunrise or any alos passed to this method.endOfDay
- the end of day for calculating plag. This can be sunset or any tzais passed to this method.- Returns:
- the
Date
of the time of plag hamincha based on the start and end of day times passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getPlagHamincha
This method returns plag hamincha, that is 10.75 *shaos zmaniyos
(solar hours) aftersunrise
orsea level sunrise
(depending on theisUseElevation()
setting), according to the GRA. Plag hamincha is the earliest time that Shabbos can be started. The day is calculated fromsea level sunrise
tosea level sunset
orsunrise
tosunset
(depending on theisUseElevation()
- Returns:
- the
Date
of the time of plag hamincha. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getShaahZmanisGra
A method that returns a shaah zmanis (temporal hour
) according to the opinion of the GRA. This calculation divides the day based on the opinion of the GRA that the day runs from fromsea level sunrise
tosea level sunset
orsunrise
tosunset
(depending on theisUseElevation()
setting). The day is split into 12 equal parts with each one being a shaah zmanis. This method is similar toAstronomicalCalendar.getTemporalHour()
, but can account for elevation.- Returns:
- the
long
millisecond length of a shaah zmanis calculated from sunrise to sunset. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set,Long.MIN_VALUE
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getShaahZmanisMGA
A method that returns a shaah zmanis (temporal hour) according to the opinion of the Magen Avraham (MGA) based on a 72 minutes alos and tzais. This calculation divides the day that runs from dawn to dusk (for sof zman krias shema and tfila). Dawn for this calculation is 72 minutes beforesunrise
orsea level sunrise
(depending on theisUseElevation()
elevation setting) and dusk is 72 minutes aftersunset
orsea level sunset
(depending on theisUseElevation()
elevation setting). This day is split into 12 equal parts with each part being a shaah zmanis. Alternate methods of calculating a shaah zmanis according to the Magen Avraham (MGA) are available in the subclassComplexZmanimCalendar
.- Returns:
- the
long
millisecond length of a shaah zmanis. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set,Long.MIN_VALUE
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getCandleLightingOffset
A method to get the offset in minutes beforesea level sunset
which is used in calculating candle lighting time. The default time used is 18 minutes before sea level sunset. Some calendars use 15 minutes, while the custom in Jerusalem is to use a 40 minute offset. Please check the local custom for candle lighting time.- Returns:
- Returns the currently set candle lighting offset in minutes.
- See Also:
-
setCandleLightingOffset
A method to set the offset in minutes beforesea level sunset
that is used in calculating candle lighting time. The default time used is 18 minutes before sunset. Some calendars use 15 minutes, while the custom in Jerusalem is to use a 40 minute offset.- Parameters:
candleLightingOffset
- The candle lighting offset to set in minutes.- See Also:
-
isAssurBemlacha
This is a utility method to determine if the current Date (date-time) passed in has a melacha (work) prohibition. Since there are many opinions on the time of tzais, the tzais for the current day has to be passed to this class. Sunset is the classes current day'selevation adjusted sunset
that observes theisUseElevation()
settings. TheJewishCalendar.getInIsrael()
will be set by the inIsrael parameter.- Parameters:
currentTime
- the current timetzais
- the time of tzaisinIsrael
- whether to use Israel holiday scheme or not- Returns:
- true if melacha is prohibited or false if it is not.
- See Also:
-
getShaahZmanisBasedZman
A generic utility method for calculating any shaah zmanis (temporal hour) based zman with the day defined as the start and end of day (or night) and the number of shaahos zmaniyos passed to the method. This simplifies the code in other methods such asgetPlagHamincha(Date, Date)
and cuts down on code replication. As an example, passingsunrise
andsunset
orsea level sunrise
andsea level sunset
(depending on theisUseElevation()
elevation setting) and 10.75 hours to this method will return plag mincha according to the opinion of the GRA.- Parameters:
startOfDay
- the start of day for calculating the zman. This can be sunrise or any alos passed to this method.endOfDay
- the end of day for calculating the zman. This can be sunset or any tzais passed to this method.hours
- the number of shaahos zmaniyos (temporal hours) to offset from the start of day- Returns:
- the
Date
of the time of zman with the shaahos zmaniyos (temporal hours) in the day offset from the start of day passed to this method. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation.
-
getPercentOfShaahZmanisFromDegrees
A utility method that returns the percentage of a shaah zmanis after sunset (or before sunrise) for a given degree offset. For the equilux where there is a 720-minute day, passing 16.1° for the location of Jerusalem will return about 1.2. This will work for any location or date, but will typically only be of interest at the equinox/equilux to calculate the percentage of a shaah zmanis for those who want to use the Minchas Cohen in Ma'amar 2:4 and the Pri Chadash who calculate tzais as a percentage of the day after sunset. While the Minchas Cohen only applies this to 72 minutes or a 1/10 of the day around the world (based on the equinox / equilux in Israel, this method allows calculations for any degrees level for any location.- Parameters:
degrees
- the number of degrees below the horizon after sunset.sunset
- iftrue
the calculation should be degrees after sunset, or iffalse
, degrees before sunrise.- Returns:
- the
double
percentage of a sha'ah zmanis for a given set of degrees below the astronomical horizon for the current calendar. If the calculation can't be computed aDouble.MIN_VALUE
will be returned. See detailed explanation on top of the page.
-
getHalfDayBasedZman
A utility method to calculate zmanim based on Rav Moshe Feinstein and others as calculated in MTJ, Yeshiva of Staten Island, and Camp Yeshiva of Staten Island and other calendars. The day is split in two, from alos / sunrise to chatzos, and the second half of the day, from chatzos to sunset / tzais. Morning based times are calculated. based on the first 6 hours of the day, and afternoon times based on the second half of the day. As an example, passing 0.5, a start of chatzos and an end of day as sunset will return the time of mincha gedola GRA as half an hour zmanis based on the second half of the day. Some zmanim calculations can be based on subtracting sha'os zmaniyos from the end of the day, and that is supported by passing a negative hour to this method.- Parameters:
startOfHalfDay
- The start of the half day. This would be alos or sunrise for morning based times such as sof zman krias shema and chatzos for afternoon based times such as mincha gedola.endOfHalfDay
- The end of the half day. This would be chatzos for morning based times such as sof zman krias shema and sunset or tzais for afternoon based times such as mincha gedola.hours
- The number of sha'os zmaniyos (hours) to offset the beginning of the first or second half of the day. For example, 3 for sof zman Shma, 0.5 for mincha gedola (half an hour after chatzos) and 4.75 for plag hamincha. If the number of hours is negative, it will subtract the number of sha'os zmaniyos from the end of the day.- Returns:
- the
Date
of zman based on calculation of the first or second half of the day. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set, anull
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-
getHalfDayBasedShaahZmanis
A utility method to calculate the length of a sha'ah zmanis based on 1/6 of a 6 hour day.- Parameters:
startOfHalfDay
- The start of the half-day. This would be alos or sunrise for the first half of the day, or chatzos for the second half of the day.endOfHalfDay
- The end of the half-day. This would be chatzos for the first half of the day, or sunset or tzais for the second half of the day.- Returns:
- The
long
millisecond length of a shaah zmanis based on 1/6 of a half-day. If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does not set,Long.MIN_VALUE
will be returned. See detailed explanation on top of theAstronomicalCalendar
documentation. - See Also:
-