This application is designed to suit any Java TM compatible mobile device with 50K of RAM. Colour support and screen size 120x120 or more (e.g. Nokia Series 40 and 60, Motorola T720, A830 etc) would be an advantage. With Siemens mobile devices (screen size 101x64 or 101x80 pixels), or Nokia Series 30 (96x65 pixels) the application feels less comfortable though is still fully operational.
The following features are supported:
Because of limited resources the application cannot be as versatile as the ones designed for a PC, or for a specific mobile device. Here are the features that I would like to support, but either would make the application less efficient or too big, or simply impossible to implement:
HebCal by Danny Sadinoff a UNIX (Linux and Solaris)
product ported to Windows.
http://www.sadinoff.com/hebcal
Congratulations Danny, well done. The code has been thoroughly
studied and used as an excellent source of information.
Chelm.org's explanation of the Jewish Calendar
http://www.chelm.org/jewish/calendar/explain.html
Copyright 1999 Steven Ross Weintraub
A clear and comprehensive explanation, even a code provided.
Unfortunately the code doesn't work before year 1760 C.E., and apart
from that, the logic for Rosh HaShanah calculation doesn't look 100%
accurate to me.
Judaism 101. Jewish Calendar
http://www.jewfaq.org/calendar.htm
Copyright 1995-2001 Tracey R Rich
A very simple explanation of the calendar which doesn't pretend to
be exhaustive, but might be sufficient for non-developers.
Orthodox Union
http://www.ou.org
A good source of information about Jewish history, culture,
holidays. Contains Zmanim tables, publications, and more.
Countries Calendar Reform
http://webexhibits.org/calendars/year-countries.html
You might wish to visit the page to find out the date when
Gregorian calendar was adopted in your area,
Current and the only version is 1.0. Today is 10th of Kislev 5764 ( 5
Dec 2004). Let it be a Chanukah present for the Jewish community all
over the world ... and another chance to oppose Microsoft ® expansion
(J2ME is one of very few platforms completely free of Microsoft
interference).
The application web site is http://molad.palmcrust.com
For our other (commercial and free products) for Palm and mobile devices see http://www.palmcrust.com
Being interested in Jewish culture, I am not a religious person, have no religious friends, and don't visit a synagogue. This is why your comments are so important to me. Please, send me your suggestions, bug reports, etc to palmcrust@yahoo.com . You are strongly advised not to use this address for anything not related to our software. The mail box quite often runs out of quota, in which case we are unable to attend a really valuable message.
The code has been developed using j2mewtk v 1.4 and 2.0 for Linux with Nokia Series 30 and 60 MIDP Concept SDKs, and occasionally tested on real devices as well as with Windows-only emulators like Nokia Series 40, Motorola and Siemens. The manual has been prepared with Netscape 7.02 composer and HTMLDOC for Linux.
Another package contains the text classes used by the application. If you want to translate Molad to another language, just replace the text in the classes and send the updated files to me. Please, try to avoid the translation being longer than the original text.
In the Great Beit-Din, the chief Rabbi sits in his honored place, greeting the Jew who just arrived in the court. "I saw the moon last night, Rabbi, and I believe it is the beginning of a new month," reports the Jew. The Rabbi motions to a chart with many different moon shapes hanging on the wall. "Is this the shape you saw?" asks the Rabbi, pointing to a particular shape. The man who witnessed the moon would be questioned until the judges were satisfied. When the judges heard proper testimony from at least two witnesses, they would declare that a new month had arrived
That's how the calendar worked in good old days, until Hilel II established a fixed calendar in the year 359 C.E.
Current Hebrew Calendar (H.C.) is a synthesis of astronomy, mathematics, religion ... and creativity.
It is a lunisolar (moon + sun) clarendar based on the following facts:
No | Month | Days | No | Month | Days | |
1 | Nissan | 30 | 7 | Tishri | 30 | |
2 | Iyar | 29 | 8 | Cheshvan | 29 or 30 (*) | |
3 | Sivan | 30 | 9 | Kislev | 30 or 29 (*) | |
4 | Tammuz | 29 | 10 | Tevet | 29 | |
5 | Av | 30 | 11 | Shevat | 30 | |
6 | Elul | 29 | 12 | Adar / Adar Alef (**) | 29 / 30 | |
| 13 | Adar Bet (**) | 29 |
A year cannot be purely lunar, otherwise holiday seasons would drift. Relation 2 yields the average number of lunar months in a year as 235/19 or 12 7/19. In the Hebrew calendar a "regular" year has 12 months, but whenever the accumulated fraction jumps over a whole number (i.e f*(y-1) < N <= f*y, where f=7/19 , y-year number, N-a whole number (***)) , an additional month is added to a year. A year with an additional month is a leap year . In a leap year the last month Adar (29 days) is replaced by two months: Adar Alef (Adar 1) of 30 days, and Adar Bet (Adar 2) of 29 days. Simple mathematics show that leap years are 3rd, 6th, 8th, 11th, 14th, 17th and 19th in a 19-year cycle, so that each cycle has 12 non-leap and 7 leap years. (Indeed, 7 and 12 are special for any occasion !) Please note that the last month in the calendar is not the last month of a year: a new year (Rosh HaShanah) starts at 1 Tishri, just in the middle of a calendar year - after all, a tricky nation can afford a tricky calendar :).
(***) In fact we don't need to keep the old fraction! Since 19 is a prime number, a fraction like (7*y)/19 jumps over a whole number if an only if the remainder (7*y) % 19 gets less than 7.
Remember extra 793 parts in the lunar month ? Something has to be done about that. The solution provided by the calendar is pretty straightforward: calculate the exact time of a new moon (molad) for Tishri (the new year month), if it is noon or afternoon, the new year (Rosh HaShanah) is postponed one day. Well, it looks really simple ... and too simple to be the case. There is also a requirement that some holidays should not fall on a particular day of a week, like Yom Kippur must not be adjacent to Shabbat (i.e. cannot be Yom 6, or Yom 1), and Hoshanah Rabah should not fall on Shabbat. These dehiot adjustments might also result in Rosh HaShanah being postponed. See the source code for the details.
In order to postpone Rosh HaShanah, a day is added to Cheshvan, extending it to 30 days. Since year extension is not always astronomically justified, the following year might need to be reduced by one day to keep in path with the solar year. To do that a month is taken from Kislev leaving it with 29 days. Note that only one of the two months can be altered.
Any questions so far ? I have one. How was it possible to calculate all that without a computer ? :=)
---------------
Few more remarks not related to the calendar algorithm, but still might interest someone.
By 7th century C.E. the Christian world started counting years from the birth of Christ (H.C. year 3761), what is referred as Common or Christian Era (C.E.) in Jewish terminology, while dates 'Before Christ' are referred as Before Common Era (B.C.E). Please note that there is no year 0, so that year 1 B.C.E. is followed by year 1 C.E.
The actual solar year is "only" about 365 days 5 hrs and 48 min and 46 sec. This gives extra 11 min 14 sec per a year, or extra 3 days in 4 centuries. This suggests that number of leap years is 4 centuries should be reduced by 3. In the 16th century C.E. the vernal (Spring) equinox felt on 11th of March, i.e, 10 days before the calendar equinox day, which could no longer be tolerated. The new calendar, developed under the leadership of Jesuit mathematician and astronomer Christoph Clavius only slightly differs from Julian calendar. Any multiple of 100 would correspond to a leap year in Julian calendar, whereas in the new calendar for a leap year it must also be a multiple of 400. Thus years 1600 and 2000 are leap years, whereas years 1700, 1800 and 1900 aren't.
The new Gregorian calendar was introduced in 1582 by Pope Gregory XIII who ordered that 4th of October was to be followed by 15th of October. That dropped 10 days from October and re-established the consistency of solar and calendar years. The reform took place in Italy, Poland, Portugal and Spain, other catholic countries soon followed. In England and colonies (including Ireland, and Eastern part of USA) Gregorian calendar was introduced in 1752 (2 Sept. followed by 14 Sept.), while Christian orthodox countries adopted Gregorian calendar not until 20th century (Russia: 31Jan1918- 14Feb1918, Greece: 9Mar1924-23Mar1924).
For the complete list of calendar reform dates see
http://webexhibits.org/calendars/year-countries.html
Aleph - A | Bet - B | Gimmel - G | Daled - D | Hey - H | Vav - V |
Zayin - Z | Chet - X | Tet - T | Yod - I | Caf - C | Lamed - L |
Units
| Tens
| Hundreds
| |||
---|---|---|---|---|---|
Hebrew
| Common
| Hebrew
| Common
| Hebrew
| Common
|
Aleph Ð
| 1
| Yod Ù
| 10
| Kuf ç
| 100
|
Bet Ñ
| 2
| Caf Û
| 20
| Resh è
| 200
|
Gimmel Ò
| 3
| Lamed Ü
| 30
| Shin é
| 300
|
Daled Ó
| 4
| Mem Þ
| 40
| Tav ê
| 400
|
Hey Ô
| 5
| Nun à
| 50
| TavKuf ê
| 500
|
Vav Õ
| 6
| Samech á
| 60
| TavResh êè
| 600
|
Zayin Ö
| 7
| Ayin á
| 70
| TavShin êé
| 700
|
Chet ×
| 8
| Pei ä
| 80
| TavTav êê
| 800
|
Tet Ø
| 9
| Tsadi æ
| 90
| TavTavKuf êêç |
900
|
T9 layout
[1] [2] [3]would be the best fit, however a non-T9 keypad (e.g. Nokia 3650 or Siemens SX1) will also do.
[4] [5] [6]
[7] [8] [9]
[*] [0] [#]
Some expensive models (Sony Ericsson P800, Nokia Series 90, Motorola
388) a designed to be used with a stylus, something the application
currently does not support. However in some cases there is a way
around. For example P800 has buttons labeled [A] [B] [C] [D]
translated to corresponding game keys
Screen Buttons | Key located
below the screen. All devices have at least two screen buttons: Left
and Right,
some models also have a middle screen button. Screen buttons are used for entering Commands |
LEFT
RIGHT UP DOWN | Press corresponding arrow key, or move joystick in appropriate direction |
FIRE | The location of FIRE key
is device specific. If unsure try the following:
|
[A] [B]
[C] [D] | Additional keys referred as "Game Keys". This is optional |
The arrow in the middle of Date panel shows current navigation calendar:
-> Hebrew calendar is currentNavigation calendar is explained in Controlling Date View Screen section.
<- Common calendar is current
Indicator is one of the following letters:
J - Julian calendar (if omitted , then Gregorian calendar is used)Moon phase is shown as a shape and percentage of lunar month elapsed:
L - Leap year. Left L refers to a Common leap year, while right L denotes Hebrew leap year.
Percentage | Phase | Percentage | Phase | |
0 - 11 | New moon | 50 - 61 | Full moon | |
12 - 24 | Waxing crescent | 62 - 74 | Waning gibbous | |
25 - 37 | First quarter | 75 - 87 | Third quarter | |
38 - 49 | Waxing gibbous | 88 - 99 | Waning crescent |
Day count is either an Omer day (Sefirat HaOmer starts after Passover/Pesach and ends before Shavuot), or a day in 3-week period between two fasts (17 Tammuz and 9 Av), or a day from Rosh HaShanah if neither Omer nor 3W apply. Omer and 3W days are shown if 'show Omer/3W' is enabled in Settings, in which case a special colour is used for Omer/3W pages.
The information bar for a Shabbat day might be extended with Shabbat names (like Shabbat HaGadol being the last Shabbat before Pesach), or weekly Torah readings (sedrot). For that you need to enable respectively 'show Shabbat' and/or 'show Sedrot' in Settings.
Key (-s) | Action |
LEFT or [4] | Previous day |
RIGHT or [6] | Next day |
UP or [2] | Previous month
Goes one Hebrew or Secular month back depending on navigation calendar |
DOWN or [8] | Next month
Goes one Hebrew or Secular month forward depending on navigation calendar |
[*] or [A] | Previous Year
Goes one Hebrew or Secular year back depending on navigation calendar. |
[#] or [B] | Next Year
Goes one Hebrew or Secular year forward depending on navigation calendar. |
[3] or [D] | Navigate By
Change navigation calendar. Current navigation calendar is indicated by an arrow in the middle of date pane (see Date View Data ). |
[1] | Settings
Show Seatings screen |
FIRE or [5] | Today
Go to current date |
[7] | Coming events
Same as Coming Events command (see Date View Commands) |
[9] | Past events
Same as Past Events command (see Date View Commands) |
[0] or [C] | Turn Page
If the information requires several pages, pressing a key will select next display page. See Multiple Pages and Auto-Turn Page . |
Command Name | Description |
Coming Events | Show list of events preceding the viewed date. The events are shown in ascending date order. Each line contains event name and either event date, or number of days left, depending on the List item is Settings . The events shown in the list are specified with LISTED event option. |
Past Events | Show list of
events following the viewed date. The events are shown in descending
date order.
Each line contains event name and either event date, or number of days past, depending on the List item is Settings . The events shown in the list are specified with LISTED event option |
Today | Go to current date |
Set Hebrew Date | Show Date Set screen for entering a Hebrew date |
Set Common Date | Show Date Set screen for entering a Common date |
Settings | Show Settings screen |
Help | Show Help for Date View page |
About Molad | Show release information, application details and credits |
Quit | Quit application |
You can specify Auto-Turn Page option, in which case page will is
turned automatically every 4 seconds.
You can call Date Set to select either Hebrew or Common date. Since only one date is shown, navigation calendar is not applicable to Date Set screen.
Date Set screen is also used to specify the last Julian date for Settings .
Key (-s) | Action |
LEFT or [4] | Previous day |
RIGHT or [6] | Next day |
UP or [2] | Previous month |
DOWN or [8] | Next month |
[7] | Previous week |
[9] | Next week |
[*] or [A] | Previous year |
[#] or [B] | Next year |
[1] or [C] |
Enter Year
Same as Enter Year command |
[3] or [D] |
Enter Year Before Common Era. (Common date only)
Same as Enter Year B.C command |
[5] | Today
Go to current date |
[0] | Default
date
Go to a date effective before calling Date Set screen |
FIRE | OK
Show Date View screen for selected date |
Command | Description |
OK | Show Date View screen for
selected date,
(accept selected date as the last Julian if called from Settings) |
Enter Year | Brings a separate
screen for entering year.
Only digits are accepted, therefore a year can't be entered as a Hebrew numeral, even if native format is set for Hebrew Years (see Settings ). For a common date, Common Era (C.E) is assumed |
Enter Year B.C.
(Common date only) | Enter A Year Before Common
Era (B.C.E),
Only digits can be entered. |
Today | Go to current date |
Default Date
| Go to a date effective before calling Date
Set screen
|
Help | Show help for Date View page |
Cancel | Return to previous screen without changing date |
The application accepts dates in a range from 1 Tishri 1 to 29 Elul 5000000, which corresponds to 7 October 3761 B.C.E. Julian to 1 November 4996299 C.E. Gregorian. Please note that year 0 is never accepted since (as mentioned before) year 1 B.C.E. is followed by year 1 C.E.
Touchscreen devices usually come with a pointer device(stylus) and
often don't have a T9 style keypad, which might complicate the control Date View ,
Date Set and Event Date Setup screens.
In fact, you can control these screens through menu, but it is not as
convenient as with keypad.
Starting with v 1.1 the application allows controlling the above mentioned screen also with a stylus, however this does not exclude the use of keypad. For example, some stylus devices have Game Keys that can be used along with a stylus. The application automatically recognises a touchscreen device and shows Pointer Navigation help before common help information, if relevant.
The use of stylus to be rather intuitive. In order to advance to next day/month/year, you just tap the right side of day/month/year respectively on the screen. Similarly, in order to get to previous day/month/year you tap the left side of day/month/year resp. In Date View screen you can navigate by Hebrew or secular date, depending on which day, month, or year is tapped.
Tapping day of week(DOW) or other "hot spots" is processed specifically to the screen displayed, as the following:
Screen-specific
pointer commands
| ||
---|---|---|
Screen
| Tapped field
| Command
|
Date View (calendar)
| DOW secular, left
| Past holidays/events
|
| DOW secular, right
| Set secular date
|
| DOW Hebrew, left
| Set Hebrew date
|
| DOW Hebrew, right
| Coming holidays/events
|
| DOW, middle of screen |
Today
|
| YEAR, middle of screen
| Settings
|
Date Set
| DOW, left
| Set year (B.C.E. for secular date)
|
| DOW, right
| Set year (C.E. for secular date)
|
| DOW, middle of screen |
Today
|
| MONTH, middle of screen
| Default date
|
| YEAR, middle of screen
| Set year (C.E. for secular date)
|
Event Setup
| NUMBER OF DAYS, left
| Increment number of days
|
| NUMBER OF DAYS, right
| Decrement number of days
|
Taping other spots shows Help screen.
To change an item press FIRE key or enter Select command. Some item (Location, Navigate, List) change value "on fly" others will bring up a separate screen.
Settings Screen contains the following items:
Name | Description | |||||||||||||||
Location | Israel
or Diaspora.
Choice of location affects duration of holidays and sedra scheme. In Israel some holidays are shorter than in Diaspora (that makes sense: major holidays are official non-working days in Israel, but not in Diaspora :) ) | |||||||||||||||
End Julian | The
last day of Julian Calendar. By default it is 4Oct 1582 - the last day
of Julian Calendar in the first countries adopted Gregorian calendar.
For an English-speaking country you might prefer 2 Sept 1752.
Pressing FIRE for this line brings up Set Date screen same as used with Date View. | |||||||||||||||
Navigate | Hebrew or Common. Specifies default calendar used for Date View navigation | |||||||||||||||
Hebrew Days | Specifies the way Hebrew days of month are
displayed:
Numeric - use common ("Arabic") numerals: 1, 2 ... 30. Native - use Hebrew traditional numerals where letters are used to represent numbers. A non-Hebrew release uses transliteration , for the details refer to Representing Hebrew numerals in native format. By default, Native is accepted by the Hebrew release, the others will take Numeric. | |||||||||||||||
Hebrew Years
(Hebrew release only) | Specifies the
way Hebrew years are displayed
Numeric - use common numeric representation (like 5765) Native - use Hebrew numerals for years Numeric is the only available choice for a non-Hebrew release. Hebrew release users might refer to Representing Hebrew numerals in native format for more information. | |||||||||||||||
List | Specifies
which information is shown in the list of Coming or Past events:
Date - event common date. Interval - number of days between the event date and view date separated with > for coming events. or < for past events | |||||||||||||||
Options | General
options:
| |||||||||||||||
Holidays | Show Holidays Setup screen to assign display options for Holidays | |||||||||||||||
Custom Events | Show Custom Events Screen to maintain the list of custom events | |||||||||||||||
Close | Accept new settings and get back to Date View screen. |
Acronym | Name | If enabled... |
L | List | ... the event appears in a list of coming and past event |
D | Display | ... the event is show at Date View page for appropriate date |
H | Highlight | ... the date view page for the event is show in a different colour |
E | Erev (Eve) |
... the event is appears for the preceding date as Erev
(e.g. 'Erev Rosh HaShanah' at 29 of Adar/AdarB page) |
K | Katan | .. the event is celebrated twice in a leap year, as Katan (Small) in AdarA and "Full-Size" in AdarB (appears only for AdarB events). See Adar Bet Events for explanations. |
Comments:
To specify display options for a holiday:
To add or edit an event, select an event (New Event ... for adding) and press FIRE to get Event Setup screen. You can go straight to event options by entering Set Options comman. To delete an event enter Delete command.
Event Setup screen shows event names, event date and options. Use UP and DOWN key to navigate between event names and options (some devices might have it in a different way).
Default display options of a custom event are Listed, Displayed. To edit display options enter Set Options command. This brings up Display Options setup screen similar to the one used for customising holidays .
Event date is initially set to the day and month of the active (last viewed) date - the date shown on Date View Screen before Settings command was entered. To change the event date enter Set Date command - this brings up Event Date Setup screen.
The following keys are used with Event Date Setup screen:
Key (-s) | Action |
LEFT or [4] | Previous day of month |
RIGHT or [6] | Next day of month |
UP or [2] | Previous month |
DOWN or [8] | Next month |
[*] or [A] | Reduce number of days |
[#] or [B] | Increase number of days |
[1] or [C] | Get day and month from the active (last viewed) date |
[3] or [D] | Get day and month from today |
[7] | Go 7 days back |
[9] | Go 7 days forward |
Comments:
If you are lucky enough to be born or married in AdarB, you can
follow Purim tradition and celebrate your remarkable date twice in a
leap year. To do that you set up a custom event for AdarB, and enable
Katan as display option (see Event
Display Options )