Repository navigation
3.0.0 (2026-10-21)
Includes breaking changes
- Remove deprecated methods flagged for removal, including
ComprehensiveZmanimcalendarclassgetSofZmanShmaKolEliyahu()getTzaisGeonim3Point65Degrees()- was prior to 13.5 minutes in Yerushalayim at the equinox/equilux.getTzaisGeonim3Point676Degrees()- was prior to 13.5 minutes in Yerushalayim at the equinox/equilux.getSofZmanTfilahAteretTorah()- use thegetSofZmanTfilaAteretTorah()getSofZmanShmaFixedLocal()getSofZmanTfilaFixedLocal()getMinchaGedolaBaalHatanyaGreaterThan30()should now be calculated viaZmanimCalendar.getMinchaGedolaGreaterThan30(Instant minchaGedolaBaalHatanya)getFixedLocalChatzosBasedZmanim(Date, Date, double)- was replaced by the more generic
ZmanimCalendar.getHalfDayBasedZman(Date, Date, double)method
- was replaced by the more generic
- Move
getSunriseBaalHatanya()andgetSunsetBaalHatanya()to the parentZmanimCalendarclass. - various mispelled
getBainHasmashos()based zmanim (use the properly spelled getBainHasmashos versions
JewishCalendarclassisVeseinTalUmatarStartDate()- useTefilaRules.isVeseinTalUmatarStartDate()isVeseinTalUmatarStartingTonight()- useTefilaRules.isVeseinTalUmatarStartingTonight()isVeseinTalUmatarRecited()- useTefilaRiles.isVeseinTalUmatarRecited()isVeseinBerachaRecited()- useTefilaRules.isVeseinBerachaRecited()isMashivHaruachStartDate- useTefilaRules.isMashivHaruachStartDate()isMashivHaruachEndDate()- useTefilaRules.isMashivHaruachEndDate()isMashivHaruachRecited()- useTefilaRules.isMashivHaruachRecited()isMoridHatalRecited()- useTefilaRules.isMoridHatalRecited()
- Remove deprecated redundant GeoLocationUtils. Use the GeoLocation class instead.
- Remove the com.kosherjava.util.Time class. Now that Sha'os zmaniyos use the java.time.Duration class, this was obsolete.
- UTF-8 is here. A number of clases have Hebrew in the documentation and code (especially the HebrewDateFormatter class).
- Move some methods from
ComprehensiveZmanimCalendarto the parentZaminCalendarclasses.getShaahZmanis72Minutes()getAlos16Point1Degrees()getSofZmanShmaMGA72Minutes()getSofZmanTfilaMGA72Minutes()getTzaisGeonim8Point5Degrees()getZmanisBasedOffset(double)
ZmanimCalendarclass rename some generically named method names to be more specific. The actual zmanim were not changed.- rename
getTzais()->getTzaisGeonim8Point5Degrees() getAlosHashachar()->getAlos16Point1Degrees()getSofZmanShmaMGA()->getSofZmanShmaMGA72Minutes()getSofZmanTfilaMGA()->getSofZmanTfilaMGA72Minutes()getMinchaGedola()->getMinchaGedolaGRA()getMinchaKetana()->getMinchaKetanaGRA()getPlagHamincha()->getPlagHaminchaGRA()getShaahZmanisMGA()->getShaahZmanis72Minutes()getAlos72()->getAlos72Minutes()getTzais72()->getTzais72Minutes()getShaahZmanisGra()->getShaahZmanisGRA()getAlos120()->getAlos120Minutes()getAlos96()->getAlos96Minutes()getAlos90()->getAlos90Minutes()getAlos72()->getAlos72Minutes()getAlos60()->getAlos60Minutes()getTzais50()->getTzais50Minutes()getTzais60()->getTzais60Minutes()getTzais72()->getTzais72Minutes()getTzais90()->getTzais90Minutes()getTzais96()->getTzais96Minutes()getTzais120()->getTzais120Minutes()getChatzos()->getChatzosHayom()getChatzosAsHalfDay()->getChatzosHayomAsHalfDay()isAssurBemlacha()->isAssurBemelacha()
- rename
- Rename some classes the confusingly named
ComplexZmanimCalendartoComrehensiveZmanimCalendar. - Move "legacy" classes to
java.timeequivelants- All zmanim now return
Instants insead ofDateobjects. - Replace
SimpledateFormatwithDateTimeFormatter CalendarandGregorianCalendarwere replaced withLocalDateorZonedDateTime.TimeZonewas replace withZoneIdGeoLocation.getLocalMeanTimeOffset()andgetAntimeridianAdjustment()now takes inInstantparameter.- Remove the no longer necessary
NOAACalculator.adjustHourForTimeZone(Calendar)
- All zmanim now return
getSofZman*Chametz*times will retun null if it is not Erev Pesach.- Move ErevPesach zmanim calculations from the
ComprehensiveZmanimCaledarto generic methods in the parentZmanimCalendarclass. Nothing changed in the signatures of the methods in theComprehensivZemanimCalendarclass. - Increase the minimum supported JRE version from version 8 (the code currently almost certainly works on 6 today) to Java 11 or higher.
- Tweaked logic in
AstronomicalCalendar.getInstantFromTime()to address issues near the dateline. - Improve null handling in
ComprehensiveZmanimCalendar.getMoladBasedTime() - Add
ComprehensiveZmanimCalendar.getMisheyakir12Point85Degrees() - Add
getMinchaGedolaGreaterThan30(Instant)that allows it to work with any mincha gedola claculation. ComprehensiveZmanimcalendarrename some methods.- getMinchaGedolaGreaterThan30()
->getMinchaGedolaGRAGreaterThan30()` getShaahZmanisAlos16Point1ToTzais3Point8()->getShaahZmanisAlos16Point1DegreesToTzaisGeonim3Point8Degrees()getShaahZmanisAlos16Point1ToTzais3Point7()->getShaahZmanisAlos16Point1DegreesToTzaisGeonim3Point7Degrees()getSofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees()->getSofZmanShmaAlos16Point1DegreesToTzaisGeonim7Point083Degrees()getPlagAlos16Point1ToTzaisGeonim7Point083Degrees() ->getPlagAlos16Point1DegreesToTzaisGeonim7Point083Degrees()
- getMinchaGedolaGreaterThan30()
- Change / remove
ComprehensiveZmanimcalendarzmanim that were too early.getTzaisGeonim4Point37Degrees()->getTzaisGeonim4Point42Degrees().getTzaisGeonim4Point61Degrees()->getTzaisGeonim4Point66Degrees()- Remove
getTzaisGeonim5Point88Degrees()since it is a drop too early
ZmanimCalendarAstronomical Chatzos based changes:- Add
getChatzosHalayla() - Add setting
useAstronomicalChatzos(defaulted to true) to keep the mistaken compat break introduced in the v2.5.0 release. - Add setting
useAstronomicalChatzosForOtherZmanim(defaulted to false). - Add
getChatzosAsHalfDay()to retain the old behavior of chatzos being halfway between sunrise and sunset. - Use
useAstronomicalChatzosto control ifgetChatzos()returnsgetSunTransit()(astronomical chatzos) or getChatzosAsHalfDay(). - Add
getHalfDayBasedZman(Date startOfHalfDay, Date endOfHalfDay, double hours)to allow other zmanim to be impacted by chatzos. - Use
useAstronomicalChatzosForOtherZmanim. ZmanimCalendar- add utility methodgetPercentOfShaahZmanisFromDegrees(double degrees, boolean sunset)to simplify zmaniyos time calculations. This allows calculations of various percentage of the day zmanim calculations.
- Add
- Remove code duplication in
NOAACalculator.getUTCSunrise()and.getUTCSunset() - Use Astronomical Chatzos Halayla (as opposed as halfway between sunset and sunrise or 12 hours after chatzos hayom)
AstronomicalCalculator- addgetSunLowerTransit()AstronomicalCalculator- add abstract methodgetUTCMidnight()NOAACalculator- implementgetUTCMidnight()AstronomicalCalculator- add abstract methodgetUTCMidnight()
ComprehensiveZmanimCalendar- significant updates- Started coding some zmanim to use the half-day zmanim config.
- Change
getFixedLocalChatzosBasedZmanim()in favor ofgetHalfDayBasedZman()in the parent `ZmanimCalendar class. getFixedLocalChatzos()now just calls the new getLocalMeanTime(12.0) in the grandparent AstronomicalCalendar class.- Remove [
getSolarMidnight()] that was added to theAstronomicalCalendargrandparent class. - Undeprecate
getPlagAlosToSunset()since it is not a zman that can be too late. - Add
getSofZmanAchilasChametzMGA72MinutesZmanis()andgetSofZmanBiurChametzMGA72MinutesZmanis() - Add null checks in
getMinchaGedolaAhavatShalom() - Fix
getAlos60()to usegetElevationAdjustedSunrise() - Update Tefila method to Use Consistent Spelling.
- Add
getSunsetOrWesternmostSolarAzimuth()andgetSunriseOrEasternmostSolarAzimuth()methods. - Add
getPolarPlagHaminchaBenIshChai()andgetPolarStartOfDayTeshuvosVehanhagos() - Add
getPolarStartOfDayTeshuvosVehanhagos()
zmanimFormatter now formatsDuration`s and removed support for formatting longs and Time.HebrewdateFormatter- add method
formatParsha(JewishCalendar.Parsha parsha)to allow formatting of a parsha retrieved fromJewishCalendar.getUpcomingParsha(). - Add
getHebrewMonthList()andsetHebrewMonthList(String[]). This allows overriding the default month of Chesvan to Marcheshvan etc. - Throw an
IllegalArgumentExceptionif the array length of months != 14 - Remove the experimental and private
formatMolad(long moladChalakim) - Fixed a bug that ignored the leading 0 format.
- Fix NullPointer in HebrewDateFormatter week formatting
- add method
TefilaRulesJewishCalendarisYomTov()now returns true for 20 Nissan- add missing brace to
isYomTov()and simplify logic getDaysInJewishMonth(int,int)andgetLastDayOfGregorianMonth(int,int)now have parameter order as year, month (it had been month, year).isJewishLeapYear(int)is now public.- Rename
isHavdalahRecited()->isTonightMutarBemelacha() - Added plus and minus methods (matching the
java.time.LocalDateclass) for years, months and days. - Add
getTekufa()andgetTekufaAsInstant() - Rename
ParshatoParshah. This was done in formatters as well.
GeoLocationNOAACalculator- fix Solar Azimuth and ElevationAstronomicalCalculatorAdd some methodsgetSolarAzimuth((Instant, GeoLocation)- the first parameter was a ZonedDateTime earlier in the rewritegetSolarElevation(Instant, GeoLocation)- the first parameter was a ZonedDateTime earlier in the rewritegetTimeAtAzimuth90Or270(double)- Use and Default to Using The sun's apparent angular semi-diameter for that day
- Rename
getSolarRadius(LocalDate)->getApparentSolarRadius(LocalDate)to avoid confusion - Rename a
stronomicalApparentSolarRadius->apparentSolarRadius
AstronomicalCalendar- Fix null handling in
getSunTransit(Date,Date) - Deprecate
getSunriseSolarDipFromOffsetandgetSunsetSolarDipFromOffset - Pass proper parameter to
getDateFromTimeingetLocalMeanTime - Add
getLocalMeanTime(). - Move
getSolarMidnight()to the parent class where it belongs. - Correct USNO noon calculation in some locations where it was sometimes 12 hours off.
- Add
getTimeAtAzimuth(double azimuth) - All sha'os zmaniyos that had returned long (and a Long.MIN_VALUE when N/A) now return java.time.Duration (and a null when N/A)
- Add two new more accurate and slower calculators
MeeusCalculator- a calculator that implements the higher accuracy Jean Meeus algorithmn (the existing NOAACalculator uses the low accuracy implementation)SPACalculator- a higher accuracy calculator
- Deprecate the USNO-Based
SunTimesCalculatorthat is not as accurate as other calculators.
- Fix null handling in