Tefila Rules Added to KosherJava Zmanim Library

Kosel Picture 1932
Davening at the Kosel. This picture was taken by my grandfather Sidney (Nesanel) Siegfried on Aug 1, 1932 כ״ח תמוז תרצ״ב. This article was posted exactly 90 years to the day (Gregorian date) after the picture was taken.
The new TefilaRules class has been added to the KosherJava Zmanim Library. This will be included in the upcoming v2.4.0 release. The TefilaRules class was added in an effort to help zmanim calendar authors who sometimes require knowing if תחנון tachanun is recited on a specific day in order to set tefila times (such as mincha starting X minutes before shkiah, and a few minutes later if tachanun is not recited). It is also useful for siddur app creators. With many different minhagim (mostly chasidishe) about when tachanun is recited, the class currently supports 12 different options that can allow setting the rules for a majority of minhagim.
Yahrzeits such as 7 Adar, (Moshe Rabbeinu’s yahrzeit) or holidays celebrated by specific communities such as Purim Mezhbizh (Medzhybizh) celebrated on 11 Teves or Purim Saragossa celebrated on the 17th of Shevat (the Wikipedia date seems to be in error), are not (and likely never will be) supported by this class.
Other tefila related rules such as the existing Mashiv Haruach etc. rules were moved over from the JewishCalendar class to this new class where they have a more natural fit. The methods that were migrated over, were deprecated in the JewishCalendar class and will be removed in v3.0.0.

Key Methods in the TefilaRules Class

The following are the key methods in the new TefilaRules class.

Sample Code

TefilaRules tr = new TefilaRules();
JewishCalendar jCal = new JewishCalendar();
HebrewDateFormatter hdf = new HebrewDateFormatter();
hdf.setHebrewFormat(true); // Hebrew formatting
jCal.setJewishDate(5783, JewishDate.TISHREI, 1); // Rosh Hashana
System.out.println(hdf.format(jCal) + " - Is tachanun recited: " + tr.isTachanunRecitedShacharis(jCal));
jCal.setJewishDate(5729, JewishDate.SHEVAT, 21);
System.out.println(hdf.format(jCal) + " - is mashiv haruch recited: " + tr.isMashivHaruachRecited(jCal));
jCal.setJewishDate(5783, JewishDate.ADAR, 17);
System.out.println(hdf.format(jCal) + " - Is tachanun recited: " + tr.isTachanunRecitedShacharis(jCal));
tr.setTachanunRecitedWeekOfPurim(false); //default is true
System.out.println(hdf.format(jCal) + " - Is tachanun recited: " + tr.isTachanunRecitedShacharis(jCal));

Output:

א׳ תשרי תשפ״ג - Is tachanun recited: false
כ״א שבט תשכ״ט - is mashiv haruch recited: true
י״ז אדר תשפ״ג - Is tachanun recited: true
י״ז אדר תשפ״ג - Is tachanun recited: false

Taanis Bechoros Added to the KosherJava Zmanim API

Matzos
Years ago I posted the Calculating Erev Pesach Zmanim that discussed the addition of sof zman achilas chametz and sof zman biur chametz times to the API. Based on a request on the KosherJava project’s GitHub repository, a new isTaanisBechoros() method was added to the API. The Taanis Bechoros fast day usually occurs on Erev Pesach, but in years like this year (5781/תשפ״א – 2021) when Erev Pesach occurs on Shabbos, the fast is moved back to Thursday the 12th of Nissan. Erev Pesach occurs on Shabbos an average of once every 10 years. The frequency of such occurrences ranges from 3 to 20 years. It will next occur in the year 5785/תשפ״ה – 2025, followed 20 years later in the year 5805/תת״ה – 2045. The code is included in the new v2.2.0 release of the KosherJava zmanim library. The following code sample shows the basic usage of the new method.

JewishCalendar jd = new JewishCalendar();
HebrewDateFormatter hdf = new HebrewDateFormatter();
jd.setJewishDate(5781, JewishDate.NISSAN, 12);
System.out.println(jd.isTaanisBechoros());

Output:

true

Latest Kiddush Levana Time – Location, Location, Location

The full moon visible from the Inbal hotel sukkah.

In the previously published Zmanim For Kiddush Levana Before Shavuos 5778 article, we demonstrated how location plays a key role in the earliest time one can recite Kiddush Levana / קידוש לבנה. This article will focus on the Sof Zman Kiddush Levana, or the latest that one can recite Kiddush Levana. In the past we posted the technical Calculating Kiddush Levana Times Using the Zmanim API post, with a simple example of using the KosherJava Zmanim API to calculate Kiddush Levana. Here is a slightly more complex example.
The Bach on the Tur Hilchos Kiddush Hachodesh (Orach Chayim 426 תכ”ו) discusses not reciting Kiddush Levana on Yom Tov.

גם נוהגים שאין מקדשין אותה במ״ש שחל בו י״ט כי כן כתב מהרי״ל בסוף הלכות שבועות ובשנת ש״ץ לא היתה נראה הלבנה במוצאי י״כ וגם אח״כ לא היתה נראה עד ליל ט״ו והיינו מקדשין אותה בליל י״ט ולא חששנו על החילוקים כי אין זה אלא קפידא בעלמא כאילו יצא מחוץ לתחום למעלה מעשרה במחשבה להקביל פני השכינה ואין להקפיד אלא לכתחלה דאפשר לקדשה אח”כ כגון שבועות כשחל א״ב אבל בליל ט״ו דסוכות דלא אפשר לברך בלילה שלאחריו דכבר נתמלא פגימתה יש לברך בליל ט״ו

He writes that in Tishrei 5390 (1629) there was cloud cover from Yom Kippur until the first night of Succos. The Bach who was the Rabbi in Kraków at that time (see the Be’er Haitev 426:5), writes that they said Kiddush Levana on the first night of Sukkos. This is right after he mentioned that it is our custom not to recite Kiddush Levana after halfway between molad and molad (following the Maharil and Rema, and not the Mechaber who allows a little extra time). Was tzais (the earliest time to recite Kiddush Levana), on the first night of Succos in Kraków that year (5390 / 1629) after the midpoint between molad and molad? Is the Bach saying that in this case bedieved you should still recite Kiddush Levana, or is he just saying that it can be said on Yom Tov when waiting until after Yom Tov will be too late?

The Impact of Calendar Dechiyos / דחיות

The day of the molad of Tishrei is the target day for the first day of Rosh Hashana. However, the Jewish calendar has four rules that delay the start of the Jewish year by a day or two (in a case of two delays combining), a subject that we will hopefully cover at some point – עוד חזון למועד. If not for these delays known as dechiyos that occur about 60% of all years, the 15th night of the month of Tishrei, would always be early enough to recite Kiddush Levanah. The average lunar month is a drop over 29 and a half days (29 days, 12 hours, 44 minutes and 3.3 seconds), so the halfway point that is the end of the earlier time quoted by the Bach would be 14 days, 18 hours and 22 minutes after the molad. The calculation below shows that in the case of 15 Tishrei, 5390 (the evening of Oct 1, 1629), even the earlier zman for sof zman Kiddush Levana did not happen until the morning of the first day of Succos. The molad of Tishrei that year was about 2.5 hours before the day’s end. This resulted in a dechiya of Molad Zaken / מולד זקן. This delayed Rosh Hashanah by a day pushing it from Monday to Tuesday. There was no dechiya of Lo ADU Rosh / לא אד״ו ראש, so the delay was not as long as it could have been (had there been a combination of the two dechiyos). Sunset on the first night of Sukkos that year in Krakow was at 5:18 pm (using standard time), and the moon rose at 5:54 pm, so they were able to recite Kiddush Levana that night.

Despite dechiyos, the time of tzais in Krakow is before sof zman Kiddush Levana on the first night of Succos approximately 73% of the time, making the ability to recite Kiddush Levanah on the first night of Sukkos for the longitude of Krakow (that is close to Yerushalayim) more common than not. As you will see below, the farther west you go, the less likely it is to happen.

Sof Zman Kiddus Levana Around the World

Being that Sof Zman Kiddush Levana is a fixed time globally, and can’t be said before local tzais, the farther west you are, the less of a probability you have of encountering a late Kiddush Levana. Conversely, the farther east you are, the greater your probability is of encountering a late Kiddush Levana. The chart below was inspired by Rabbi Dovid Heber’s example in his sefer Shaarei Zmanim of the rare ability to recite Kiddush Levana on the 17th of the month in Anadyr, Russia. This town is at the far eastern portion of Russia, not far from the International Date Line. The chart shows the percentage of times that Sof Zman Kiddush Levana in Tishrei and the annual average for various places around the world occurs after tzais (calculated as 8.5°) on the 15th, 16th and 17th of the month.

15thט״ו 16thט״ז 17thי״ז
Location תשרי All תשרי All תשרי All
Anadyr, Russia 91% 57% 46% 18% N/A 0.2%
Sydney, Australia 88% 73% 42% 21% N/A N/A
Yerushalayim 75% 57% 24% 8% N/A N/A
Krakow, Poland 73% 55% 22% 7% N/A N/A
Lakewood, NJ 62% 41% 8% 1.6% N/A N/A
Los Angeles, CA 56% 35% 3% 0.7% N/A N/A
Kurima Island, Japan
(Chazon Ish)
39% 18% N/A N/A N/A N/A

Molad Calculation Code Sample

The code below shows rudimentary use of the Jewish Calendar functionality and molad retrieval for the historical date of the Bach’s 1629 Sukkos night kiddush levanah.

int month = JewishDate.TISHREI;
int year = 5390;
JewishDate erevSukkos = new JewishDate(year, JewishDate.TISHREI, 14);
JewishDate molad = JewishDate.getMolad(year, month);
Date tchilas3Days = JewishCalendar.getTchilasZmanKidushLevanah3Days(year, month);
Date tchilas7Days = JewishCalendar.getTchilasZmanKidushLevanah7Days(year, month);
Date sofZmanBetweenMoldos = JewishCalendar.getSofZmanKidushLevanahBetweenMoldos(year, month);
Date sofZmanKidushLevanah15Days = JewishCalendar.getSofZmanKidushLevanah15Days(year, month);
TimeZone krakowTZ = TimeZone.getTimeZone("Europe/Warsaw");
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy 'at' HH:mm:ss z");
SimpleDateFormat dayFormat = new SimpleDateFormat("MMM dd, yyyy");
sdf.setTimeZone(krakowTZ);
System.out.println("Molad: " + molad + " / " + dayFormat.format(molad.getTime()) + ", day of week: "
		+ molad.getDayOfWeek() + ", Hours: " + molad.getMoladHours() + ", minutes: " + molad.getMoladMinutes()
		+ ", Chalakim: " + molad.getMoladChalakim());
System.out.println("Tchilas Zman Kidush Levanah 3 Days: " + sdf.format(tchilas3Days));
System.out.println("Tchilas Zman Kidush Levanah 7 Days: " + sdf.format(tchilas7Days));
System.out.println("Erev Succos: " + erevSukkos + " / " + dayFormat.format(erevSukkos.getTime()));
System.out.println("Sof Zman KidushLevanah Between Moldos: " + sdf.format(sofZmanBetweenMoldos));
System.out.println("Sof Zman Kidush Levanah 15 Days: " + sdf.format(sofZmanKidushLevanah15Days));

The output in Central European Time (CET) is:

Molad: 29 Elul, 5389 / Sep 17, 1629, day of week: 2, Hours: 15,
        minutes: 46, Chalakim: 5
Tchilas Zman Kidush Levanah 3 Days: Sep 20, 1629 at 14:25:19 CET
Tchilas Zman Kidush Levanah 7 Days: Sep 24, 1629 at 14:25:19 CET
Erev Succos: 14 Tishrei, 5390 / Oct 01, 1629
Sof Zman KidushLevanah Between Moldos: Oct 02, 1629 at 08:47:21 CET
Sof Zman Kidush Levanah 15 Days: Oct 02, 1629 at 14:25:19 CET

Odds & Ends

While Tishrei has much higher odds than most months for a late Sof Zman Kiddush Levana, Shevat is very close to Tishrei, and sometimes exceeds it. Cheshvan and Kislev are the only variable length Jewish months. In a chaser (Deficient / short) year they will both have the short month length of 29 days. The months of Cheshvan and Kislev are followed by Teves that is always 29 days. With the possibility of three 29-day months in a row and being in the winter with early tzais times, the month of Shevat is the most likely to have a very late sof zman Kiddush Levana, as pointed out by Rabbi Heber in his Shaarei Zmanim.

The reason that Anadyr only has a 57% chance of being able to recite Kiddush Levana year-round on the 15th VS 73% in Sydney, even though Anadyr is 3% more likely to have Kiddush levana on the 15th of Tishrei, is due to the high latitude of Anadyr (64.7° N) that results in 25.4% of the months not having tzais on the 15th.

The closest case to almost not being able to recite Kiddush levanah on the 15th of Tishrei without dechiyos would be in a location immediately to the east of the Chazon Ish dateline such as Kurima Island on a year when the molad was exactly at sunset in Yerushalayim and the true opposition (full moon) was much earlier than the average opposition, causing the moon to rise after sof zman kidush levana. Calculations show that this would never actually happen on Sukkos though it is likely to occur on Pesach since the molad of Nisan is much more likely to be before Rosh Chodesh.

Parsha Code Restored to the KosherJava Zmanim Calendar API

Sunrise CalendarIn the Parsha Code Removed from KosherJava Zmanim Calendar API article posted two years ago, I documented the removal of the parsha code from the KosherJava Zmanim API due to licensing issues. I would like to announce that thanks to Yechiel Paricher, the zmanim library now supports a clean LGPL implementation. Yechiel’s Jan 17, 2019 pull request that was a port of his C libzmanim code, was finally merged on August 22nd, and over the past day, the old formatting code for parshiyos was restored after being changed to work with the new code. The new code not only restores the old functionality, but adds support for the special parshiyos of Shekalim, Zachor, Parah and Hachodesh. It also added support for Shabbos Mevorchim and Machar Chodesh.

Is the Year 5780 Spelled תש״פ or תש״ף?

Luach Davar Be'ito 5780 Showing both תש"פ and תש"ף
Luach Davar Be’ito 5780 Showing both תש”פ and תש”ף
With the start of the new year 5780, I have been asked the following question numerous times. What is the proper Hebrew spelling of the Jewish year 5780 (2019/2020). Is it spelled תש”פ or תש”ף? This is the first time in 30 years that we have this “burning” question, with the previous one being 5750 (1989/1990) תש״נ or תש״ן. The question arises when the Hebrew spelling of the Jewish year ends with a Hebrew final form (also known as end, “ende” or straight (versus bent)) letter of מנצפ״ך. This happens in years ending with a 20, 40, 50, 80 or 90. According to the Academy of the Hebrew Language’s article שנת תש״ף regarding the spelling of the year, the final form תש״ף is the correct spelling. However, things are not that simple. The excellent 1,700+ page calendar לוח דבר בעתו / Luach Davar Be’ito published annually by Rabbi Mordechai Genut, straddles this by showing one form on the front cover and the other on the spine. In the introduction, Rabbi Genut writes:

ישבנו על המדוכה כיצד לכתוב תש״ף או תש״פ. כדי לרצות בעלי 2 הדעות, נקטנו (כאשר נקטנו בלוח ה׳תש״ן) שבשער הכריכה יכתב ה׳תש״פ ואילו בכריכת הגב יכתב ה׳תש״ף.

In the calendar he published an 11-page essay on the subject by Rabbi Yaakov Matalon who provides the following reasons to use the תש”פ version:

  • ראשי תיבות or Hebrew abbreviations only end with a final form letter if the abbreviation is typically read as a word such as רמב״ם ,רמב״ן and רי״ף. Abbreviations such as יוה״כ that are read as יום הכיפורים are always spelled ending in a non-final form letter. The Academy of the Hebrew Language reads the year as the proper word תָּשָׁ״ף, while many (most) disagree and read it as תאו-שין-פא.
  • The abbreviated year is not an abbreviation at all, but a number in its Hebrew format, and final form letters do not belong at the end of a number. This has been the tradition in writing and publishing Jewish books, where the non-final form spelling of page and chapter numbers has traditionally been used. This can be seen in the Talmud, Shulchan Aruch, Tehilim and other sefarim. There have been exceptions to this rule, but they are indeed exceptions. The same tradition is in place on most Jewish monuments.
  • In some cases the final form מנצפ״ך letters are considered to have a different numerical value. See the Sefer Haaruch on the אטב״ח entry (the Atbach / אטב״ח cipher should not be confused with the אתב״ש / Atbash cipher) and the Maharsha’s explanation on Rashi in Sukka 52b.
  • For kabbalistic reasons the Sefer Chassidim in chapter 1154 mentions that the end form of the letter ף is avoided where possible in tefilah (מוסף is an unavoidable exception). The Sefer Harokeach mentions the same concept in chapter 337 regarding the lack of any ף in Birkas Hamazon. This would apply to this year that ends in an 80, but not the other 4 examples every century.

Rabbi Matalon ends with:

מסקנתנו היא, שמִּבֵּין שני האֳפנים, עדיף לכתוב באות רגילה, לא-סופית: תש״פ, תש״צ. מכּל השיקולים נמצא שזה האופן העדיף. מצד שני, נראה שאין מקום לטענה שהכותב באות-סופית, תש״ף, תש״ץ וכדומה, טועה הוא. אופן כתיבה זה, למרות חסרונותיו, מקובל אצל רבים, ואין מי שרואה בו טעות.

In short, neither is incorrect, but the better of the two is the non-final form תש״פ.

Formatting the Year in the KosherJava Zmanim API

The HebrewDateFormatter class in the KosherJava zmanim library coded years ago produced the final form of תש״ף (with the exception of single character years such as the year 5050). This logic was included in all ports that I am aware of. With a recent commit, the option for formatting years ending in מנצפ״ך was added, and the default changed to produce the non-final form version of תש״פ. Detailed information can be seen in the HebrewDateFormatter API documentation.