@@ -2891,7 +2891,7 @@ public Date getSofZmanKidushLevanaBetweenMoldos(Date alos, Date tzais) {
28912891 }
28922892
28932893 /**
2894- * Returns the Date of the <em>molad</em> based time if it occurs on the current date. Since <em>Kiddush Levana</em>
2894+ * Returns the Date of the <em>molad</em> based time if it occurs on the current date.Since <em>Kiddush Levana</em>
28952895 * can only be said during the day, there are parameters to limit it to between <em>alos</em> and <em>tzais</em>. If
28962896 * the time occurs between <em>alos</em> and <em>tzais</em>, <em>tzais</em> will be returned
28972897 *
@@ -3607,4 +3607,231 @@ public Date getPlagHaminchaBaalHatanya() {
36073607 public Date getTzaisBaalHatanya () {
36083608 return this .getSunsetOffsetByDegrees (ZENITH_6_DEGREES );
36093609 }
3610+
3611+ /**
3612+ * Calculate zmanim based on <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten</a> as
3613+ * calculated in <a href="https://en.wikipedia.org/wiki/Mesivtha_Tifereth_Jerusalem">MTJ</a>, <a href=
3614+ * "https://en.wikipedia.org/wiki/Mesivtha_Tifereth_Jerusalem">Yeshiva of Staten Island</a>, and Camp Yeshiva
3615+ * of Staten Island. The day is split in two, from <em>alos</em> / sunrise to fixed local chatzos, and and second
3616+ * half of the day, from fixed local chatzos to sunset / <em>tzais</em>. Morning based times are calculated based
3617+ * on the first 6 hours, and afternoon times based on the second half of the day.
3618+ *
3619+ * @param startOfHalfDay
3620+ * The start of the half day. This would be <em>alos</em> or sunrise for morning based times and fixed
3621+ * local <em>chatzos</em> for the second half of the day.
3622+ * @param endOfHalfDay
3623+ * The end of the half day. This would be fixed local <em>chatzos</em> for morning based times and sunset
3624+ * or <em>tzais</em> for afternoon based times.
3625+ * @param hours
3626+ * the number of hours to offset the beginning of the first or second half of the day
3627+ *
3628+ * @return the <code>Date</code> of the later of {@link #getMinchaGedolaBaalHatanya()} and {@link #getMinchaGedola30Minutes()}.
3629+ * If the calculation can't be computed such as in the Arctic Circle where there is at least one day a year
3630+ * where the sun does not rise, and one where it does not set, a null will be returned. See detailed
3631+ * explanation on top of the {@link AstronomicalCalendar} documentation.
3632+ *
3633+ * @see ComplexZmanimCalendar#getFixedLocalChatzos()
3634+ */
3635+ public Date getFixedLocalChatzosBasedZmanim (Date startOfHalfDay , Date endOfHalfDay , double hours ) {
3636+ if (startOfHalfDay == null || endOfHalfDay == null ) {
3637+ return null ;
3638+ }
3639+ long shaahZmanis = (endOfHalfDay .getTime () - startOfHalfDay .getTime ()) / 6 ;
3640+ return new Date ((long )(startOfHalfDay .getTime () + shaahZmanis * hours ));
3641+ }
3642+
3643+ /**
3644+ * This method returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten</a> opinion of the
3645+ * claculation of <em>sof zman krias shema</em> (latest time to recite <em>Shema</em> in the morning) according to the
3646+ * opinion of the <em><a href="https://en.wikipedia.org/wiki/Avraham_Gombinern">Magen Avraham (MGA)</a></em> that the
3647+ * day is calculated from dawn to nightfall, but calculated using the first half of the day only. The half a day starts
3648+ * at <em>alos</em> defined as {@link #getAlos18Degrees() 18°} and ends at {@link #getFixedLocalChatzos() fixed local
3649+ * chatzos}. <em>Sof Zman Shema</em> is 3 <em>shaos zmaniyos</em> (solar hours) after <em>alos</em> or half of this half-day.
3650+ *
3651+ * @return the <code>Date</code> of the latest <em>zman krias shema</em>. If the calculation can't be computed such
3652+ * as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle
3653+ * where the sun may not reach low enough below the horizon for this calculation, a null will be returned.
3654+ * See detailed explanation on top of the {@link AstronomicalCalendar} documentation.
3655+ * @see #getAlos18Degrees()
3656+ * @see #getFixedLocalChatzos()
3657+ * @see #getFixedLocalChatzosBasedZmanim(Date, Date, double)
3658+ */
3659+ public Date getSofZmanShmaMGA18DegreesToFixedLocalChatzos () {
3660+ return getFixedLocalChatzosBasedZmanim (getAlos18Degrees (), getFixedLocalChatzos (), 3 );
3661+ }
3662+
3663+ /**
3664+ * This method returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten</a> opinion of the
3665+ * claculation of <em>sof zman krias shema</em> (latest time to recite <em>Shema</em> in the morning) according to the
3666+ * opinion of the <em><a href="https://en.wikipedia.org/wiki/Avraham_Gombinern">Magen Avraham (MGA)</a></em> that the
3667+ * day is calculated from dawn to nightfall, but calculated using the first half of the day only. The half a day starts
3668+ * at <em>alos</em> defined as {@link #getAlos16Point1Degrees() 16.1°} and ends at {@link #getFixedLocalChatzos() fixed local
3669+ * chatzos}. <em>Sof Zman Shema</em> is 3 <em>shaos zmaniyos</em> (solar hours) after this <em>alos</em> or half of this half-day.
3670+ *
3671+ * @return the <code>Date</code> of the latest <em>zman krias shema</em>. If the calculation can't be computed such
3672+ * as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle
3673+ * where the sun may not reach low enough below the horizon for this calculation, a null will be returned.
3674+ * See detailed explanation on top of the {@link AstronomicalCalendar} documentation.
3675+ * @see #getAlos16Point1Degrees()
3676+ * @see #getFixedLocalChatzos()
3677+ * @see #getFixedLocalChatzosBasedZmanim(Date, Date, double)
3678+ */
3679+ public Date getSofZmanShmaMGA16Point1DegreesToFixedLocalChatzos () {
3680+ return getFixedLocalChatzosBasedZmanim (getAlos16Point1Degrees (), getFixedLocalChatzos (), 3 );
3681+ }
3682+
3683+ /**
3684+ * This method returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten</a> opinion of the
3685+ * claculation of <em>sof zman krias shema</em> (latest time to recite <em>Shema</em> in the morning) according to the
3686+ * opinion of the <em><a href="https://en.wikipedia.org/wiki/Avraham_Gombinern">Magen Avraham (MGA)</a></em> that the
3687+ * day is calculated from dawn to nightfall, but calculated using the first half of the day only. The half a day starts
3688+ * at <em>alos</em> defined as {@link #getAlos90() 90 minutes before sunrise} and ends at {@link #getFixedLocalChatzos()
3689+ * fixed local chatzos}. <em>Sof Zman Shema</em> is 3 <em>shaos zmaniyos</em> (solar hours) after this <em>alos</em> or
3690+ * half of this half-day.
3691+ *
3692+ * @return the <code>Date</code> of the latest <em>zman krias shema</em>. If the calculation can't be computed such
3693+ * as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle
3694+ * where the sun may not reach low enough below the horizon for this calculation, a null will be returned.
3695+ * See detailed explanation on top of the {@link AstronomicalCalendar} documentation.
3696+ * @see #getAlos90()
3697+ * @see #getFixedLocalChatzos()
3698+ * @see #getFixedLocalChatzosBasedZmanim(Date, Date, double)
3699+ */
3700+ public Date getSofZmanShmaMGA90MinutesToFixedLocalChatzos () {
3701+ return getFixedLocalChatzosBasedZmanim (getAlos90 (), getFixedLocalChatzos (), 3 );
3702+ }
3703+
3704+ /**
3705+ * This method returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten</a> opinion of the
3706+ * claculation of <em>sof zman krias shema</em> (latest time to recite <em>Shema</em> in the morning) according to the
3707+ * opinion of the <em><a href="https://en.wikipedia.org/wiki/Avraham_Gombinern">Magen Avraham (MGA)</a></em> that the
3708+ * day is calculated from dawn to nightfall, but calculated using the first half of the day only. The half a day starts
3709+ * at <em>alos</em> defined as {@link #getAlos72() 72 minutes before sunrise} and ends at {@link #getFixedLocalChatzos()
3710+ * fixed local chatzos}. <em>Sof Zman Shema</em> is 3 <em>shaos zmaniyos</em> (solar hours) after this <em>alos</em> or
3711+ * half of this half-day.
3712+ *
3713+ * @return the <code>Date</code> of the latest <em>zman krias shema</em>. If the calculation can't be computed such
3714+ * as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle
3715+ * where the sun may not reach low enough below the horizon for this calculation, a null will be returned.
3716+ * See detailed explanation on top of the {@link AstronomicalCalendar} documentation.
3717+ * @see #getAlos72()
3718+ * @see #getFixedLocalChatzos()
3719+ * @see #getFixedLocalChatzosBasedZmanim(Date, Date, double)
3720+ */
3721+ public Date getSofZmanShmaMGA72MinutesToFixedLocalChatzos () {
3722+ return getFixedLocalChatzosBasedZmanim (getAlos72 (), getFixedLocalChatzos (), 3 );
3723+ }
3724+
3725+ /**
3726+ * This method returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten</a> opinion of the
3727+ * claculation of <em>sof zman krias shema</em> (latest time to recite <em>Shema</em> in the morning) according to the
3728+ * opinion of the <em><a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a></em> that the day is calculated from
3729+ * sunrise to sunset, but calculated using the first half of the day only. The half a day starts at {@link #getSunrise()
3730+ * sunrise} and ends at {@link #getFixedLocalChatzos() fixed local chatzos}. <em>Sof Zman Shema</em> is 3 <em>shaos
3731+ * zmaniyos</em> (solar hours) after sunrise or half of this half-day.
3732+ *
3733+ * @return the <code>Date</code> of the latest <em>zman krias shema</em>. If the calculation can't be computed such
3734+ * as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle
3735+ * where the sun may not reach low enough below the horizon for this calculation, a null will be returned.
3736+ * See detailed explanation on top of the {@link AstronomicalCalendar} documentation.
3737+ * @see #getSunrise()
3738+ * @see #getFixedLocalChatzos()
3739+ * @see #getFixedLocalChatzosBasedZmanim(Date, Date, double)
3740+ */
3741+ public Date getSofZmanShmaGRASunriseToFixedLocalChatzos () {
3742+ return getFixedLocalChatzosBasedZmanim (getSunrise (), getFixedLocalChatzos (), 3 );
3743+ }
3744+
3745+ /**
3746+ * This method returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten's</a> opinion of the
3747+ * claculation of <em>sof zman tfila</em> (<em>zman tfilah</em> (the latest time to recite the morning prayers))
3748+ * according to the opinion of the <em><a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a></em> that the day is
3749+ * calculated from sunrise to sunset, but calculated using the first half of the day only. The half a day starts at
3750+ * {@link #getSunrise() sunrise} and ends at {@link #getFixedLocalChatzos() fixed local chatzos}. <em>Sof zman tefila</em>
3751+ * is 4 <em>shaos zmaniyos</em> (solar hours) after sunrise or 2/3 of this half-day.
3752+ *
3753+ * @return the <code>Date</code> of the latest <em>zman krias shema</em>. If the calculation can't be computed such
3754+ * as northern and southern locations even south of the Arctic Circle and north of the Antarctic Circle
3755+ * where the sun may not reach low enough below the horizon for this calculation, a null will be returned.
3756+ * See detailed explanation on top of the {@link AstronomicalCalendar} documentation.
3757+ * @see #getSunrise()
3758+ * @see #getFixedLocalChatzos()
3759+ * @see #getFixedLocalChatzosBasedZmanim(Date, Date, double)
3760+ */
3761+ public Date getSofZmanTfilaGRASunriseToFixedLocalChatzos () {
3762+ return getFixedLocalChatzosBasedZmanim (getSunrise (), getFixedLocalChatzos (), 4 );
3763+ }
3764+
3765+ /**
3766+ * This method returns returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten's</a> opinion
3767+ * of the calculation of <em>mincha gedola</em>,the earliest time one can pray <em>mincha</em> <em><a href=
3768+ * "https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a></em>that is 30 minutes after{@link #getFixedLocalChatzos() fixed
3769+ * local chatzos}.
3770+ *
3771+ * @return the <code>Date</code> of the time of mincha gedola. If the calculation can't be computed such as in the
3772+ * Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
3773+ * not set, a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
3774+ * documentation.
3775+ *
3776+ * @see #getMinchaGedola()
3777+ * @see #getFixedLocalChatzos()
3778+ * @see #getMinchaKetanaGRAFixedLocalChatzosToSunset
3779+ */
3780+ public Date getMinchaGedolaGRAFixedLocalChatzos30Minutes () {
3781+ return getTimeOffset (getFixedLocalChatzos (), MINUTE_MILLIS * 30 );
3782+ }
3783+
3784+ /**
3785+ * This method returns returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten's</a> opinion
3786+ * of the calculation of <em>mincha ketana</em> (the preferred time to recite the mincha prayers according to the
3787+ * opinion of the <em><a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a></em> and others) calculated according
3788+ * to the <em><a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a></em>that is 3.5 <em>shaos zmaniyos</em> (solar
3789+ * hours) after {@link #getFixedLocalChatzos() fixed local chatzos}.
3790+ *
3791+ * @return the <code>Date</code> of the time of mincha gedola. If the calculation can't be computed such as in the
3792+ * Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
3793+ * not set, a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
3794+ * documentation.
3795+ *
3796+ * @see #getMinchaGedola()
3797+ * @see #getFixedLocalChatzos()
3798+ * @see #getMinchaGedolaGRAFixedLocalChatzos30Minutes
3799+ */
3800+ public Date getMinchaKetanaGRAFixedLocalChatzosToSunset () {
3801+ return getFixedLocalChatzosBasedZmanim (getFixedLocalChatzos (), getSunset (), 3.5 );
3802+ }
3803+
3804+ /**
3805+ * This method returns returns <a href="https://en.wikipedia.org/wiki/Moshe_Feinstein">Rav Moshe Feinsten's</a> opinion
3806+ * of the calculation of This method returns <em>plag hamincha</em> calculated according to the
3807+ * <em><a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a></em>that is 4.75 <em>shaos zmaniyos</em> (solar
3808+ * hours) after {@link #getFixedLocalChatzos() fixed local chatzos}.
3809+ *
3810+ * @return the <code>Date</code> of the time of mincha gedola. If the calculation can't be computed such as in the
3811+ * Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
3812+ * not set, a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
3813+ * documentation.
3814+ *
3815+ * @see #getPlagHamincha()
3816+ * @see #getFixedLocalChatzos()
3817+ * @see #getMinchaKetanaGRAFixedLocalChatzosToSunset
3818+ * @see #getMinchaGedolaGRAFixedLocalChatzos30Minutes
3819+ */
3820+ public Date getPlagHaminchaGRAFixedLocalChatzosToSunset () {
3821+ return getFixedLocalChatzosBasedZmanim (getFixedLocalChatzos (), getSunset (), 4.75 );
3822+ }
3823+
3824+ /**
3825+ * Method to return <em>tzais</em> (dusk) calculated as 50 minutes after sea level sunset. This method returns
3826+ * <em>tzais</em> (nightfall) based on the opinion of Rabbi Moshe Feinstein for the New York area. This time should
3827+ * not be used for latitudes different than the NY area.
3828+ *
3829+ * @return the <code>Date</code> representing the time. If the calculation can't be computed such as in the Arctic
3830+ * Circle where there is at least one day a year where the sun does not rise, and one where it does not set,
3831+ * a null will be returned. See detailed explanation on top of the {@link AstronomicalCalendar}
3832+ * documentation.
3833+ */
3834+ public Date getTzais50 () {
3835+ return getTimeOffset (getElevationAdjustedSunset (), 50 * MINUTE_MILLIS );
3836+ }
36103837}
0 commit comments