31.9. Conversion To and From Other Calendars

The Emacs calendar displayed is always the Gregorian calendar, sometimes called the "new style" calendar, which is used in most of the world today. However, this calendar did not exist before the sixteenth century and was not widely used before the eighteenth century; it did not fully displace the Julian calendar and gain universal acceptance until the early twentieth century. The Emacs calendar can display any month since January, year 1 of the current era, but the calendar displayed is the Gregorian, even for a date at which the Gregorian calendar did not exist.

While Emacs cannot display other calendars, it can convert dates to and from several other calendars.

31.9.1. Supported Calendar Systems

The ISO commercial calendar is used largely in Europe.

The Julian calendar, named after Julius Caesar, was the one used in Europe throughout medieval times, and in many countries up until the nineteenth century.

Astronomers use a simple counting of days elapsed since noon, Monday, January 1, 4713 B.C. on the Julian calendar. The number of days elapsed is called the Julian day number or the Astronomical day number.

The Hebrew calendar is used by tradition in the Jewish religion. The Emacs calendar program uses the Hebrew calendar to determine the dates of Jewish holidays. Hebrew calendar dates begin and end at sunset.

The Islamic calendar is used in many predominantly Islamic countries. Emacs uses it to determine the dates of Islamic holidays. There is no universal agreement in the Islamic world about the calendar; Emacs uses a widely accepted version, but the precise dates of Islamic holidays often depend on proclamation by religious authorities, not on calculations. As a consequence, the actual dates of observance can vary slightly from the dates computed by Emacs. Islamic calendar dates begin and end at sunset.

The French Revolutionary calendar was created by the Jacobins after the 1789 revolution, to represent a more secular and nature-based view of the annual cycle, and to install a 10-day week in a rationalization measure similar to the metric system. The French government officially abandoned this calendar at the end of 1805.

The Maya of Central America used three separate, overlapping calendar systems, the long count, the tzolkin, and the haab. Emacs knows about all three of these calendars. Experts dispute the exact correlation between the Mayan calendar and our calendar; Emacs uses the Goodman-Martinez-Thompson correlation in its calculations.

The Copts use a calendar based on the ancient Egyptian solar calendar. Their calendar consists of twelve 30-day months followed by an extra five-day period. Once every fourth year they add a leap day to this extra period to make it six days. The Ethiopic calendar is identical in structure, but has different year numbers and month names.

The Persians use a solar calendar based on a design of Omar Khayyam. Their calendar consists of twelve months of which the first six have 31 days, the next five have 30 days, and the last has 29 in ordinary years and 30 in leap years. Leap years occur in a complicated pattern every four or five years.

The Chinese calendar is a complicated system of lunar months arranged into solar years. The years go in cycles of sixty, each year containing either twelve months in an ordinary year or thirteen months in a leap year; each month has either 29 or 30 days. Years, ordinary months, and days are named by combining one of ten "celestial stems" with one of twelve "terrestrial branches" for a total of sixty names that are repeated in a cycle of sixty.

31.9.2. Converting To Other Calendars

The following commands describe the selected date (the date at point) in various other calendar systems:

Mouse-2 Other Calendars

Display the date that you click on, expressed in various other calendars.

p c

Display ISO commercial calendar equivalent for selected day (calendar-print-iso-date).

p j

Display Julian date for selected day (calendar-print-julian-date).

p a

Display astronomical (Julian) day number for selected day (calendar-print-astro-day-number).

p h

Display Hebrew date for selected day (calendar-print-hebrew-date).

p i

Display Islamic date for selected day (calendar-print-islamic-date).

p f

Display French Revolutionary date for selected day (calendar-print-french-date).

p C

Display Chinese date for selected day (calendar-print-chinese-date).

p k

Display Coptic date for selected day (calendar-print-coptic-date).

p e

Display Ethiopic date for selected day (calendar-print-ethiopic-date).

p p

Display Persian date for selected day (calendar-print-persian-date).

p m

Display Mayan date for selected day (calendar-print-mayan-date).

If you are using X, the easiest way to translate a date into other calendars is to click on it with Mouse-2, then choose Other Calendars from the menu that appears. This displays the equivalent forms of the date in all the calendars Emacs understands, in the form of a menu. (Choosing an alternative from this menu doesn't actually do anything--the menu is used only for display.)

Put point on the desired date of the Gregorian calendar, then type the appropriate keys. The p is a mnemonic for "print" since Emacs "prints" the equivalent date in the echo area.

31.9.3. Converting From Other Calendars

You can use the other supported calendars to specify a date to move to. This section describes the commands for doing this using calendars other than Mayan; for the Mayan calendar, see the following section.

g c

Move to a date specified in the ISO commercial calendar (calendar-goto-iso-date).

g j

Move to a date specified in the Julian calendar (calendar-goto-julian-date).

g a

Move to a date specified in astronomical (Julian) day number (calendar-goto-astro-day-number).

g h

Move to a date specified in the Hebrew calendar (calendar-goto-hebrew-date).

g i

Move to a date specified in the Islamic calendar (calendar-goto-islamic-date).

g f

Move to a date specified in the French Revolutionary calendar (calendar-goto-french-date).

g C

Move to a date specified in the Chinese calendar (calendar-goto-chinese-date).

g p

Move to a date specified in the Persian calendar (calendar-goto-persian-date).

g k

Move to a date specified in the Coptic calendar (calendar-goto-coptic-date).

g e

Move to a date specified in the Ethiopic calendar (calendar-goto-ethiopic-date).

These commands ask you for a date on the other calendar, move point to the Gregorian calendar date equivalent to that date, and display the other calendar's date in the echo area. Emacs uses strict completion (Section 8.3) whenever it asks you to type a month name, so you don't have to worry about the spelling of Hebrew, Islamic, or French names.

One common question concerning the Hebrew calendar is the computation of the anniversary of a date of death, called a "yahrzeit." The Emacs calendar includes a facility for such calculations. If you are in the calendar, the command M-x list-yahrzeit-dates asks you for a range of years and then displays a list of the yahrzeit dates for those years for the date given by point. If you are not in the calendar, this command first asks you for the date of death and the range of years, and then displays the list of yahrzeit dates.

31.9.4. Converting from the Mayan Calendar

Here are the commands to select dates based on the Mayan calendar:

g m l

Move to a date specified by the long count calendar (calendar-goto-mayan-long-count-date).

g m n t

Move to the next occurrence of a place in the tzolkin calendar (calendar-next-tzolkin-date).

g m p t

Move to the previous occurrence of a place in the tzolkin calendar (calendar-previous-tzolkin-date).

g m n h

Move to the next occurrence of a place in the haab calendar (calendar-next-haab-date).

g m p h

Move to the previous occurrence of a place in the haab calendar (calendar-previous-haab-date).

g m n c

Move to the next occurrence of a place in the calendar round (calendar-next-calendar-round-date).

g m p c

Move to the previous occurrence of a place in the calendar round (calendar-previous-calendar-round-date).

To understand these commands, you need to understand the Mayan calendars. The long count is a counting of days with these units:

1 kin = 1 day   1 uinal = 20 kin   1 tun = 18 uinal
1 katun = 20 tun   1 baktun = 20 katun

Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11 tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long count dates as early as 7.17.18.13.1, but no earlier. When you use the g m l command, type the Mayan long count date with the baktun, katun, tun, uinal, and kin separated by periods.

The Mayan tzolkin calendar is a cycle of 260 days formed by a pair of independent cycles of 13 and 20 days. Since this cycle repeats endlessly, Emacs provides commands to move backward and forward to the previous or next point in the cycle. Type g m p t to go to the previous tzolkin date; Emacs asks you for a tzolkin date and moves point to the previous occurrence of that date. Similarly, type g m n t to go to the next occurrence of a tzolkin date.

The Mayan haab calendar is a cycle of 365 days arranged as 18 months of 20 days each, followed a 5-day monthless period. Like the tzolkin cycle, this cycle repeats endlessly, and there are commands to move backward and forward to the previous or next point in the cycle. Type g m p h to go to the previous haab date; Emacs asks you for a haab date and moves point to the previous occurrence of that date. Similarly, type g m n h to go to the next occurrence of a haab date.

The Maya also used the combination of the tzolkin date and the haab date. This combination is a cycle of about 52 years called a calendar round. If you type g m p c, Emacs asks you for both a haab and a tzolkin date and then moves point to the previous occurrence of that combination. Use g m n c to move point to the next occurrence of a combination. These commands signal an error if the haab/tzolkin date combination you have typed is impossible.

Emacs uses strict completion (Section 8.3.3) whenever it asks you to type a Mayan name, so you don't have to worry about spelling.