Hebrew Calendar

A Java library for Jewish calendar computations — dates, festivals, zmanim, readings and daily learning.

BSD 3-Clause · Java 11 · no runtime dependencies

It powers hebrewcalendar.net

Every date, zman and reading on hebrewcalendar.net — its calendars, zmanim pages, printable schedules and shul displays — is computed by this library. The mobile app runs the same calendar as a companion C library, checked against this one day by day.

What it does

Dates

Jewish, Gregorian and Julian calendars, converted in any direction; leap years, month lengths, anniversaries and yahrzeits, including the dates that fall only in some years.

Festivals and fasts

Yom Tov, chol hamoed, rosh chodesh, fasts and their deferrals, the named Shabbatot, the omer, Chabad dates, and a separate set of US holidays. Israel and the diaspora each keep their own schedule.

Zmanim

Sunrise and sunset from the NOAA solar calculations, dawn and nightfall in several opinions, candle lighting, chametz deadlines, when a fast begins and ends, and sane answers where the sun does not rise or set.

Tekufot and the molad

The four solar seasons according to Shmuel or Rav Ada, the molad of any month, when Tal uMatar begins, and Birkat HaChama.

Torah readings

The weekly parsha with its aliyot, festival and special readings, and haftarot across twenty-six customs, resolved through their fallback tree.

Daily learning

Chumash, Daf Yomi, Rambam (one chapter and three), Sefer HaMitzvot, Tanya, Tehillim by day of the month and through Elul, Pirkei Avot, and the Sotah sefirah count.

Using it

It is on Maven Central. Calendar names and reading schedules are compiled in, from the shared hebrewcalendar-data repository, so nothing else is needed; building from source works too, with mvn package.

<dependency>
  <groupId>net.hebrewcalendar</groupId>
  <artifactId>hebrewcalendar</artifactId>
  <version>2.1.0</version>
</dependency>
// A Gregorian date as a Jewish one
IDate<JewishCalendar> today =
    ICalendar.JEWISH.convert(ICalendar.GREGORIAN.fromYMD(2026, 9, 18));

// Zmanim for a place and a day
Location montreal = new Location(45.5017, -73.5673, 0.0, "America/Montreal", false, false);
Zmanim zmanim = new Zmanim(LocalDate.now(), montreal);

ZonedDateTime sunset = zmanim.getSunset().getTime();
Zman candles = zmanim.getCandleLightingZman();   // null unless candles are lit tonight

The API documentation covers the rest.

See also

hebrewcalendar.net

The site this library computes: calendars, zmanim, readings and daily learning in English, Hebrew, Russian and French, and the displays that hang in shuls.

The C library

The same calendar in C, for the mobile app, checked against this one day by day.

opentorah.org

Where the Torah reading and haftarah data comes from, custom by custom, and the reference this library checks its readings and its dates against.

hebrewcalendar-data

Calendar names, reading schedules and learning cycles, shared by both libraries and generated into Java, C and Dart.