@@ -2891,7 +2891,7 @@ public Date getSofZmanKidushLevanaBetweenMoldos(Date alos, Date tzais) {
2891
2891
}
2892
2892
2893
2893
/**
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>
2895
2895
* can only be said during the day, there are parameters to limit it to between <em>alos</em> and <em>tzais</em>. If
2896
2896
* the time occurs between <em>alos</em> and <em>tzais</em>, <em>tzais</em> will be returned
2897
2897
*
@@ -3607,4 +3607,231 @@ public Date getPlagHaminchaBaalHatanya() {
3607
3607
public Date getTzaisBaalHatanya () {
3608
3608
return this .getSunsetOffsetByDegrees (ZENITH_6_DEGREES );
3609
3609
}
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
+ }
3610
3837
}
0 commit comments