diff --git a/src/main/java/com/kosherjava/zmanim/ComplexZmanimCalendar.java b/src/main/java/com/kosherjava/zmanim/ComplexZmanimCalendar.java index 1adca8f2..3e0d6605 100644 --- a/src/main/java/com/kosherjava/zmanim/ComplexZmanimCalendar.java +++ b/src/main/java/com/kosherjava/zmanim/ComplexZmanimCalendar.java @@ -2597,6 +2597,22 @@ public Date getBainHashmashosYereim2Point1Degrees() { public Date getBainHasmashosYereim2Point1Degrees() { return getBainHashmashosYereim2Point1Degrees(); } + + /** + * This method returns the time for tzait hacochavim (nightfall) calculated according to the opinion of the + * Geonim. This is calculated as 13.5 zmaniyot minutes after elevated sunset. This is a very early zman, and it + * should not be used without halachic guidance! It certainly should not be used for ending Shabbat, even unintentionally! + * + * @return the Date of the time of tzais. 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, a null will be + * returned. See detailed explanation on top of the {@link AstronomicalCalendar} documentation. + */ + private Date getTzaisGeonim13AndAHalfMinutesZmanis() { + long shaahZmanit = getTemporalHour(getElevationAdjustedSunrise(), getElevationAdjustedSunset()); + long dakahZmanit = shaahZmanit / 60; + return getTimeOffset(getElevationAdjustedSunset(),(13 * dakahZmanit) + (dakahZmanit / 2)); + } /** * This method returns the tzais (nightfall) based on the opinion of the Geonim calculated at the @@ -3086,6 +3102,25 @@ public Date getPlagHaminchaAteretTorah() { return getPlagHamincha(getAlos72Zmanis(), getTzaisAteretTorah(), false); } + /** + * This method returns the time of plag hamincha based on the calculation of the Yalkut Yosef, that the + * day starts {@link #getSunrise() at sunrise} and is calculated as ending at {@link #getSunset() sunset}. + * shaos zmaniyos are calculated based on this day and + * removed from {@link #getTzaisGeonim13AndAHalfMinutesZmanis() tzais} to reach this time. This time is 1.25 + * {@link #getShaahZmanisGra() shaos zmaniyos} (temporal hours) before {@link #getTzaisGeonim13AndAHalfMinutesZmanis() tzais} + * + * @return the Date of the plag. 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 the {@link AstronomicalCalendar} documentation. + * @see #getTzaisGeonim13AndAHalfMinutesZmanis() + * @see #getShaahZmanisGra() + */ + public Date getPlagHaminchaYalkutYosef() { + long shaahZmanit = getTemporalHour(getElevationAdjustedSunrise(), getElevationAdjustedSunset()); + long dakahZmanit = shaahZmanit / 60; + return getTimeOffset(getTzaisGeonim13AndAHalfMinutesZmanis(), -(shaahZmanit + (15 * dakahZmanit))); + } + /** * Method to return tzais (dusk) calculated as 72 minutes zmaniyos, or 1/10th of the day after * {@link #getSeaLevelSunset() sea level sunset}. This is the way that the