The (French) Republican calendar: The French Republican Calendar was established in 1793 and abolished in 1806; it's only of historical interest now, and was apparently never used outside of France. But it does shed light on the idealistic psychology of the Republic; it reflects a true optimistic belief that a new age of reason was dawning.
Under the Republic, almost everything "old" and "irrational" was to be replaced by new, rational thinking. Feet, inches, and pounds were thrown out to make way for the metric system; the clumsy units of hours, minutes, and seconds were replaced with decimal versions; and a new calendar, with twelve months of 30 days each, was introduced. The months were:
Vendémiaire (Vintage) = 22 Sep to 21 Oct (roughly) Brumaire (Mist) = 22 Oct to 20 Nov Frimaire (Frost) = 21 Nov to 20 Dec Nivôse (Snow) = 21 Dec to 19 Jan Pluviôse (Rain) = 20 Jan to 18 Feb Ventôse (Wind) = 19 Feb to 20 Mar Germinal (Seed-time) = 21 Mar to 19 Apr Floréal (Blossom) = 20 Apr to 19 May Prairial (Meadow) = 20 May to 18 Jun Messidor (Harvest) = 19 Jun to 18 Jul Thermidor (Heat) = 19 Jul to 17 Aug Fructidor (Fruit) = 18 Aug to 16 Sep
The archaic, illogical, meaningless month names of the old calendar were replaced with logical, meaningful names. Months such as "July" and "August", named after utterly undemocratic Roman emperors, were discarded. The month names within each season rhyme, probably as an aid in remembering them. Instead of having the calendar start on a completely arbitrary day, 1 Vendémiaire was specified to be the day of the autumnal equinox.
Using twelve 30-day months does leave five "extra" days at the end of each year (six days, in leap years). These were given the following names:
Jour de la vertu (Virtue Day) Jour du genie (Genius Day) Jour du travail (Labour Day) Jour de l'opinion (Reason Day) Jour des recompenses (Rewards Day) Jour de la revolution (Revolution Day) (leap years only)
The first day of the calendar, 1 Vendémiaire 1, corresponds to Gregorian 22 September 1793 (keeping in mind the Republican Calendar wasn't actually established legally until 5 October 1793).
The thirty days of each month were organized into three weeks of ten days each. The Republican leaders were in part trying to evade the religious aspects of a seven-day week, and presumably also liked having a "decimal" week to match the decimal metric system and decimal clock. Some sources state that providing one day of rest every tenth day, instead of one every seven days, was an unpopular move contributing to the end of this calendar; however, Robert Golanski has pointed out the following comments from E. G. Richards, Mapping Time: The Calendar and its History, Oxford University Press 1998, p 277:
"Offices, schools, shops, and tribunals were all required to close on Decadis and on Quintidi afternoons; the people thus had one and a half days off in ten (15 per cent of their live to rest in), whereas under the old system they had had one in seven days off (14.3 per cent); they were slightly better off under the new system."
Unfortunately, when first devised, the French attempted to have New Years Day line up with the autumn equinox, which is not particularly regular and was probably a real pain in a world without pocket calculators. Thus, years 3, 7, 11, and 15 AR were leap years. To complicate matters, the calendar was specified to have leap years at four-year intervals; you can't do that and consistently obey the autumnal equinox rule (at some point, you have to have a five-year interval.)
I haven't been able to find a simple answer as to how this was to be resolved. According to some accounts, it was never really resolved and the equinoctal rule was left in place. According to others, the calendar was to switch to a new scheme starting in 20 AR: years divisible by four would be leap years, unless also divisible by 128. This slight deviation from the Gregorian scheme, in which leap years are those divisible by four, unless divisible by 100, unless divisible by 400, is slightly simpler and gives a calendar that is much closer to the true tropical year.
There are also claims that leap years were to follow the Gregorian "4, 100, 400" rule. I have no real evidence to support one scheme over the other. But I suspect that a revolution so devoted to revising every aspect of human existence that it changed names of all months, "regularized" each to be 30 days, and made a week ten days long, probably went out of its way not to produce a calendar resembling that proposed by a medieval, pre-scientific Pope. Also, the fact that it would be an almost perfect match to the tropical year would lend support to the scheme. In any case, it's ironic that the Republicans created a calendar that would be good for a hundred thousand years, considering that the Republican Calendar was abolished in Year 14, and the Republic itself didn't last much longer.
Postscript: The Bureau des Longitudes, on their very useful calendar page, states that the calendar was to have every fourth year be leap, but also always start on the autumnal equinox. This contradiction in the calendar specification, according to the BDL, was one reason given for abandoning the calendar. I admit to doubts about this; it seems a relatively minor reason for such abandonment, compared to having to learn a totally new system that no one else in the world understood. But I would also expect the BDL to be especially knowledgeable about a French calendar.
In the C/C++ source code for calendars, I have (somewhat arbitrarily) chosen to implement the 4/128 rule, with options for the 4/100/400 rule and an interesting algorithm for use of the equinoctal rule, described below.
Algorithm for the equinoctal form of the French Republican calendar: As is discussed in the above comments on the Republican calendar, there is some disagreement on the handling of leap years. The main problem is that the calendar was possibly to be altered starting in the year 20 AR, but by the time that came around, the calendar was no longer in use. Of the three suggested schemes for handling leap years, two result in easy computation (simpler than for any other calendar handled in the code). The third, "equinoctal" rule (in which 1 Vendémiaire, "New Years Day", is the day of the autumnal equinox as seen from Paris) is much more complex.
All three methods are implemented in the C/C++ source code for calendars on this site, and if you look at date.cpp, you will see how it is handled. The key is the determination of the Julian Day for 1 Vendémiaire.
Most implementations of the equinoctal rule rely on doing the somewhat extensive math required to find out when the equinox occurred as seen from Paris. For my software, I wrote some code to do this once for a span of about 1600 years (from -1007 AR = 785 Gregorian to +611 AR = 2403 Gregorian), and then searched for values of delta which, in the formula
JD = JD0 + year * 365 + ((year * 683 + delta) / 2820)
would match long parts of that 1600-year span. (The above is very similar to the algorithm used for the Persian modern calendar, and for the algorithm appearing in the C/C++ source for the Jalali calendar. This should not be surprising; in both cases, one is attempting to "fit" a calendar of almost exactly 365 + 683 / 2820 days per year.)
The comments on the Jalali calendar describe how this fitting was done. Aside from the fact that one is computing the autumnal equinox as seen from Paris instead of the spring equinox as seen from Teheran, the process involved is identical.
The result was as follows:
JD0 = 2375474 for negative years; JD0 = 2375475 for zero and positive years; For years -1007 to -815, delta = 405 For years -814 to -493, delta = 439 For years -492 to -332, delta = 498 For years -331 to -109, delta = 469 For years -108 to -1, delta = 419 For years 0 to 143, delta = 393 For years 144 to 300, delta = 322 For years 301 to 486, delta = 184 For years 487 to 610, delta = 92
The Islamic calendar: The Islamic calendar is a lunar-only calendar. It makes only a minor effort to track the solar cycle, so a given month can occur in any season. There are twelve months:
Muharram (30 days) (holy month) Safar (29 days) Rabi'a I (30 days) Rabi'a II (29 days) Jumada I (30 days) Jumada II (29 days) Rajab (30 days) (holy month) Sha'ban (29 days) Ramadan (30 days) (fasting month) Shawwal Dhu (29 days) Dhu al-Q'adah (30 days) (holy month) Dhu al-Hijjah (29 days; 30 in leap years) (holy month)
As you can see, months alternate between 29 and 30 days, for an average month length of 29.5 days. The actual average "lunar month" is 29.530588 days; to accommodate this, an extra day is inserted into the last month in 11 years out of every 30. The resulting calendar month is about 2.9 seconds shorter than the real lunar month. The resulting year is 354.36666 (354 + 11 / 30) days long, meaning that the months "slip" badly relative to the seasons.
Originally, months always began with the first sighting of a crescent moon, and the month lengths varied irregularly, instead of being fixed in advance as described above. This gives rise to several problems, such as the fact that you cannot create a calendar in advance (though some work has been done to improve predictions of crescent visibility). Also, it meant that the "date line" moves from month to month, depending on where the moon first becomes visible. The above system, used in Guide, is also used as a "civil" calendar in some Muslim countries.
The Islamic calendar begins with 16 July 622 (Julian calendar), which corresponds to 1 Muharram 1. Be aware that there is some dissent on the subject of this starting point, with some sources stating that the date should be 15 July 622.
The Hebrew calendar: The Hebrew calendar is the official calendar of Israel and of the Jewish faith.
Like the Chinese calendar, the Hebrew calendar is a lunisolar calendar. As with all lunisolar calendars, the rules of the Hebrew calendar are somewhat complex. A year can have 12 or 13 months; in a 13-month "leap" year, the extra month of Adar II is inserted in the middle of the year. Seven such months are inserted in a 19-year cycle. The result is that there are 12*19+7=235 months every 19 years; it so happens that 235 lunations is very close to 19 solar years, allowing the Hebrew calendar to match both cycles quite well.
An "ordinary" 12-month year contains 354 days; a "leap" 13-month year contains 384 days. But each variety can be extended or shortened by one day, resulting in "complete", "regular", and "deficient" years! Here is a table of the months and their lengths, in each of the resulting six varieties of a year:
Ordinary Leap Defic Regul Compl Defic Regul Compl 30 30 30 30 30 30 Tishri 29 29 30 29 29 30 Heshvan 29 30 30 29 30 30 Kislev 29 29 29 29 29 29 Tevet 30 30 30 30 30 30 Shevat 29 29 29 30 30 30 Adar -- -- -- 29 29 29 Adar II 30 30 30 30 30 30 Nisan 29 29 29 29 29 29 Iyar 30 30 30 30 30 30 Sivan 29 29 29 29 29 29 Tammuz 30 30 30 30 30 30 Av 29 29 29 29 29 29 Elul --- --- --- --- --- --- 353 354 355 383 384 385
Notice that, in leap years, the extra month of Adar II is inserted and a day is added to Adar. In deficient years, a day is removed from Kislev; in complete years, one is added to Heshvan.
By allowing for six different lengths of the year, the Hebrew calendar can satisfy several design constraints. It can have months that match the lunar cycle with great precision. It can also prevent the holy day of Hoshana Rabba (Tishri 21) from occurring on the Sabbath (Saturday), and Yom Kippur (Tishri 10) from occurring on the day before or after the Sabbath. (To accomplish that, it is necessary to have Tishri 1 occur on a Monday, Tuesday, Thursday, or Saturday.)
The years are counted from the Era of Creation, or "Era Mundi". In this system, 1 Tishri 1 A.M. ("Anno Mundi", or "Year of the World") corresponds to -3760 October 7 (in the Julian calendar).
Lunisolar: Some calendars, like the Islamic calendar, are "lunar-only"; they correspond well to the actual motion of the moon, but tell you nothing about the seasonal variations due to solar motion. Most calendars, like the Gregorian and Julian calendars, follow the solar cycle well, but the months have little relation to lunar motion.
A few calendars, including the Chinese and Hebrew calendars, are true "lunisolar" calendars: the first day of the month is usually close to a New Moon, and a given month occurs at a given time of the solar year. To accomplish this feat, it's necessary to have both extra days added to some months in some years; and to insert an extra "intercalary month" in some years (so a year can have either 12 or 13 months).
The Julian calendar: The Julian calendar was created by Julius Caesar's resident expert in such matters, a Greek named Sosigenes. He set up the months as we now know them and added an extra day in February every fourth (leap) year. This provides a calendar in which each year averages 365.25 days, which is pretty close to the actual length.
The Julian calendar has been essentially superseded by the Gregorian calendar, discussed in the following section.
The Gregorian calendar: The Gregorian calendar is the standard calendar of most of the world today. It is a minor modification of the Julian calendar.
The only real problem with the Julian calendar was its handling of leap years. Inserting one leap year in every four years results in a calendar year averaging 365.25 days, a good but not perfect match to the real calendar year of about 365.242189 days. This causes an "error" of about .75 days per century.
By 1582, the Julian calendar was therefore about 10 days out of adjustment to the observed seasons. Pope Gregory XIII took two steps to deal with this. First, he decreed that 4 Oct 1582 would be followed by 15 Oct 1582. Secondly, to keep this problem from recurring, he decreed that three out of every four century years (those ending in 00) would not be leap years. Thus, 1700, 1800, and 1900 were not leap years, even though they are divisible by 4, but 2000 will be a leap year.
Regrettably, it took from 1582 to 1918 for the Julian calendar to completely die out, so you do have to make clear which one is being used for dates in that interval. For example, most Catholic nations switched over immediately; most Protestant nations took considerably longer, and the USSR didn't change to the Gregorian calendar until 1918.
The Persian (Jalali and Modern) calendar: The Persian calendar is official in Iran and in some surrounding nations, such as Afghanistan and some Central Asian nations. The only difference between the Jalali and Modern Persian calendars is a subtlety in when leap days are inserted; click here for details.
Like the Gregorian and Julian calendars, the Persian calendar is strictly solar in nature; that is, it matches the seasons very nicely (better, in fact, than any other calendar on these pages), but makes no real effort to reflect lunar cycles. There are twelve months per year, as follows.
farvardin (frvrdyn) 31 days ordibehesht (ardybhSt) 31 days khordad (Krdad) 31 days tir (tyr) 31 days mordad (mrdad) 31 days shahrivar (Shryvr) 31 days mehr (mhr) 30 days Aban (Aban) 30 days Azar (AZr) 30 days day (dy) 30 days bahman (bhmn) 30 days esfand (asfnd) 29/30 days
The year begins at the spring equinox. If that instant is before midday, Teheran time, then that day is 1 farvardin; otherwise, the next day is 1 farvardin. This can result in either 365 or 366 days per year. In the former (usual) case, the last month of esfand has 29 days; otherwise, it has 30 days.
The Jalali calendar uses the "exact" astronomical equinox; that is to say, it's based on observations. The Modern Persian calendar instead inserts leap years algorithmically, with a complex pattern of 683 leap days inserted over a cycle of 2820 years. This actually makes the Modern Persian calendar extremely easy to program (see the source code described here.) The Jalali calendar is a little trickier, as will be discussed below.
This calendar has some interesting properties. First, notice that the months in the first half of the year have 31 days; these summer and autumn months also correspond to the half of the year when the earth is farthest from the sun and moves most slowly. At present, spring and summer really are close to 93 days each, and fall and winter are close to 90 days long. As a result, 1 tir will be close to the date of the Summer solstice, 1 mehr will be close to the date of the Autumnal equinox, and 1 day will be close to the date of the Winter solstice.
This situation is temporary, though; in another two millennia, spring and autumn will both be about 91.5 days long.
The Jalali observation-based system makes the distribution of leap years is more complex than in the other calendars described here. (Which almost certainly motivated the "Modern Persian" variant; use of this simplifies the computation of the calendar, and makes it predictable indefinitely into the future.) There is a good discussion of the problems caused in the Jalali system in the text and source code for the Khayam Persian Calendar program. That software makes use of the fact that, between the years 1799 to 2256 Gregorian (1178 to 1634 Persian), the leap years fall in a 33-year pattern.
However, as is pointed out in the documentation of the above program and by a paper by K.M. Borkowski, "The Persian Calendar for 3000 Years", such a rule cannot be extended indefinitely.
There are several problems here. You can see some of them by downloading this C/C++ source code and looking at the file persian.cpp. (You can click here to get a description of what else is in the ZIP file.)
First, the spring equinox is not a perfectly periodic event; it varies by up to several minutes around the mean time. Second, the length of the solar (tropical) year is slowly changing; that's why, in the above source code, the mean date of the equinox is given as a cubic polynomial in time, with a set of trigonometric terms added to that mean value.
Third, we have the difficulties provided by the fact that the earth's rotation is not perfectly uniform and, furthermore, we don't know those variations to any great degree of certainty for distant dates (the so-called "Delta-T" problem). You can extrapolate the Gregorian or Julian calendars indefinitely in the past or future, because their rules are purely mathematical in nature. But, like the Chinese calendar, the Jalali calendar requires some actual observations of the sky for distant dates.
There is a fourth problem, in that "the longitude of Teheran" could cover a substantial area. As can be seen in the above source code, I have taken the value to be East 51 degrees, 26 minutes. If anyone can supply more precise values, please e-mail me.
With these warnings noted, let's proceed to do the best we can. The above source code starts with an algorithm to determine the date of the vernal equinox. This algorithm came from Jean Meeus' Astronomical Algorithms. The result is in Ephemeris Time (ET), the sort of "uniform" time scale produced by an atomic clock (that is, it corresponds to what a physicist would call "time"). Subtracting Delta-T gives you Universal Time, which matches the slightly irregular motion of the earth (what most people would call "normal time", used for making business appointments and such.)
Next, adding TEHERAN_LONGITUDE converts the date from the meridian of Greenwich to the meridian of Teheran (i.e., to "local time"). This method provides a mathematically exact idea as to the instant of the vernal equinox as measured in Teheran local time. (Note that it is only mathematically exact. Nobody measured Delta-T to great precision thousands of years ago, and the exact nature of Delta-T in the future is not known yet. You'll see, in delta_t.cpp, that extrapolations are used for years before 1618 and after 2002.)
Unfortunately, this is a pretty cumbersome way to compute the Julian Day corresponding to 1 farvardin of a given year. To avoid that issue, I put together the following algorithm, which provides a perfect match to the "full" method for Jalali years -1096 to +2327 (Gregorian years -475 to +2947).
#define JALALI_ZERO 1947954L #define LOWER_PERSIAN_YEAR -1096 #define UPPER_PERSIAN_YEAR 2327 static long jalali_jd0( const int jalali_year) { static const short breaks[12] = { -708, -221, -3, 6, 394, 720, 786, 1145, 1635, 1701, 1866, 2328 }; static const short deltas[12] = { 1108, 1047, 984, 1249, 952, 891, 930, 866, 869, 844, 848, 852 }; int i; long rval; if( jalali_year < LOWER_PERSIAN_YEAR) return( -1L); /* out of valid range */ for( i = 0; i < 12; i++) if( jalali_year < breaks[i]) { rval = JALALI_ZERO + (long)jalali_year * 365L + (long)( deltas[i] + jalali_year * 303L) / 1250L; if( i < 3) /* zero point drops one day in first three blocks */ rval--; return( rval); } return( -1L); /* out of valid range */ }
The above works by noting that an assumed year length of exactly 365.2424 days (=365 + 303 / 1250) will provide correct results over a limited time span. For example, for Jalali years between 1145 and 1635 (that is, the range covering the present), the JD corresponding to the start of the year would be:
JD = 1947954 + 365 * year + (year * 303 + 869) / 1250
It so happens that twelve such time spans can be arranged to cover the years in question.
K. M. Borkowski provides a similar method to cover a similar time span, and Fortran source code and a DOS executable to convert between Gregorian and Jalali dates. I would have simply used this algorithm, rather than going to the trouble of developing my own; but I frankly have a poor grasp on how the Borkowski algorithm works. I'm pretty sure it uses a system resembling the above, where a long time span is covered by picking out spans over which the 33-year cycle holds; but I wasn't clear enough on it to want to use it.
The Chinese calendar: (Click here for the Italian-language version.)
The Chinese calendar is both lunisolar (meaning the months line up with lunar phases and the years line up with seasons, both at the same time), and observational (meaning that it's based on the real motions of the moon and sun, rather than on a mathematical approximation.) The result is a calendar of truly immense complexity.
Months always begin on the day containing a New Moon. The result is that months always have 29 or 30 days, in an order that is not perfectly uniform. Years contain either twelve of these months ("ordinary" years) or thirteen months ("intercalary" years.) So far, you'll notice that this closely resembles the Hebrew calendar (with the exception that the Hebrew calendar really does use a uniform, mathematically exact algorithm.)
Another similarity to the Hebrew calendar, by the way, is in the fact that an ordinary year can have 353, 354, or 355 days; a leap year can have 383, 384, or 385 days.
The months are given numbers; month #11 always contains the winter solstice. The result of that is that, between two consecutive "month #11"s, you can have either twelve or eleven months. That just leaves the problem of numbering the months in between. If there are eleven months in between, then they are simply numbered in a logical manner; month 11 is followed by month 12, which is followed by month 1 of the next year, then 2, 3, ... up to another month 11 that also contains a winter solstice. That case is the "easy" one, and occurs roughly 63% of the time. Most of the real trouble in the Chinese calendar arises when there are twelve months between consecutive month 11s:
The Chinese divided the path of the Sun's motion (the ecliptic) into twelve equally-sized pieces of 30 degrees each. The dividing points are called the twelve "Principal Terms". The winter (and summer) solstices are two of these terms; so are the equinoxes.
In our "trouble" case, therefore, we have twelve lunations between month 11s, during which the sun will cross eleven Principal Terms. Therefore, at least one lunation/month will not contain a Principal Term. The first of these is designated the "intercalary" month. (It will usually be both the first and only such month, but exceptions do occur.)
The remaining months are numbered logically, as described above (month 11 followed by 12, 1 of the next year, 2, 3, ... 11). The intercalary month is given the number of the preceding month, with the added designation that it is intercalary.
An example of this might help a great deal. In the following, we see that the New Moons of 30 Nov 1997 and 18 Dec 1998 (Gregorian) both contain winter solstices, and therefore are both designated month #11 (of Chinese years 4634 and 4635). In between, we have twelve lunations and eleven principal terms.
JD Date (Greg) Time (UT) Month Yr 2450782 30 Nov 1997 2:14:00 11 4634 2450804 p 21 Dec 1997 20:05:10 PRINCIPAL TERM (winter solstice) 2450812 29 Dec 1997 16:56:34 12 4634 2450833 p 20 Jan 1998 6:44:24 PRINCIPAL TERM 2450841 28 Jan 1998 6:00:58 1 4635 2450863 p 18 Feb 1998 20:52:58 PRINCIPAL TERM 2450871 26 Feb 1998 17:26:07 2 4635 2450893 p 20 Mar 1998 19:52:04 PRINCIPAL TERM (spring equinox) 2450900 28 Mar 1998 3:13:44 3 4635 2450923 p 20 Apr 1998 6:53:41 PRINCIPAL TERM 2450929 26 Apr 1998 11:41:22 4 4635 2450954 p 21 May 1998 6:02:05 PRINCIPAL TERM 2450959 25 May 1998 19:32:14 5 4635 2450985 p 21 Jun 1998 13:59:22 PRINCIPAL TERM (summer solstice) 2450988 24 Jun 1998 3:50:19 5i 4635 2451017 23 Jul 1998 13:43:45 6 4635 2451017 p 23 Jul 1998 0:52:31 PRINCIPAL TERM 2451047 22 Aug 1998 2:03:01 7 4635 2451048 p 23 Aug 1998 7:55:49 PRINCIPAL TERM 2451077 20 Sep 1998 17:01:29 8 4635 2451079 p 23 Sep 1998 5:33:23 PRINCIPAL TERM (autumn equinox) 2451106 20 Oct 1998 10:09:20 9 4635 2451109 p 23 Oct 1998 14:54:15 PRINCIPAL TERM 2451136 19 Nov 1998 4:26:33 10 4635 2451139 p 22 Nov 1998 12:29:51 PRINCIPAL TERM 2451166 18 Dec 1998 22:42:14 11 4635 2451169 p 22 Dec 1998 1:52:33 PRINCIPAL TERM (winter solstice) 2451195 17 Jan 1999 15:46:06 12 4635 JD Date (Greg) Time (UT) Month Yr
You'll notice that one of these lunations/months, starting on 24 June 1998, contains no Principal Term. So that is the intercalary month, and is designated "5i 4635."
Two other important notes: our concern is the day on which a New Moon or Principal Term takes place. So the fact that the lunation starting month 6 4635 occurred about thirteen hours after a Principal Term doesn't matter; they both occurred on the same calendar day, and that's all we care about. Second, the "calendar day" is based on longitude 120 East, or a time zone eight hours ahead of Greenwich (Universal) time.
Almost all of the above, by the way, comes from the Explanatory Supplement to the Astronomical Almanac. It, in turn, got much of its information from Liu and Stephenson, from a work "in press", The Chinese Calendar and Its Operational Rules. The rules given are in use for calendars prepared by the Purple Mountain Observatory in China.
One warning about the "Chinese years" numbered above. The Chinese calendar commonly worked either on a sixty-year cycle, or by numbering the years since an emperor ascended to the throne, rather than on a continuously increasing count of years. But it's also common to start numbering from the 60-year cycle that began in 2637 BC. In the above example, 28 Jan 1998 is listed as the "Chinese New Years Day" for year 4635. 4635 = 77 * 60 + 15; thus, it is the New Years Day for year 15 of the 78th "cycle" (there is no "cycle zero").
As with most (or all) of the calendars on this site, you can get source code in C/C++ for handling Chinese calendar computations. There are some unique things about this calendar that one should beware, though. All the other catalogs are handled algorithmically; the Chinese calendar requires that one load a file, CHI_CAL.DAT, into memory. You can click here to download the file (about 13 KBytes). This file basically contains a "pre-computed" Chinese calendar in condensed form; all that DATE.CPP then must do is uncompress it, which is fairly light work.
Also, you have to be careful to handle intercalary months correctly. The code in JD.CPP shows how this is done (and also gives an example of how to load CHI_CAL.DAT into memory).
Also, be aware that this is based on having computed the calendar "the right way", with accurate solar and lunar theories. Some Chinese calendars have been computed using less precision, or use the mean motion of the Sun instead of the true motion, or are approximations based on other rules, or use a longitude other than 120 East.
The Bahá'í calendar: This one is in a category of its own, relative to the other calendars mentioned on this site. Almost all calendars use "months" that either resemble the length of a lunar cycle (29 or 30 days/month), or that are 1/12 of a year (30 or 31 days/month). The Bahá'í calendar instead uses 19 "months" of exactly 19 days each. This yields 361 days, and four or five intercalary days are added to make it "fit" a solar year.
Like the Persian calendar, New Years Day ("Naw Rúz") is on the spring equinox, and is therefore either 21 or 22 March Gregorian. (Unlike the Persian calendar, though, the "day" begins at sunset instead of at noon.) Also, the Persian calendar is based on what an observer would see from Teheran; as best I can tell, the Bahá'í calendar is measured from wherever you happen to be at the time. The result would be that a person in one city might see the sun set just before the vernal equinox, and a person a few kilometers west might see the sun set just after the vernal equinox; in such a case, the "International Date Line" would, for that year only, lie between them. The following year, the International Date Line would be at a different longitude (nearly, but not exactly, 90 degrees west of the preceding IDL). People within that 90 degree slice would have five intercalary days. People in the remaining three-quarters of the world would get four intercalary days. The same thing would happen next year, except that the 90 degree slice would have shifted westward.
If the above sounds confusing, it's because it is confusing. The Bahá'í is an interesting calendar, but it has almost no advantages over the Gregorian; it's a change solely for the sake of change. 19 is an inconvenient number; it's not close to a lunar month, nor is it a multiple of 7. Most recent calendars have been attempts to reform the Gregorian; this is closer to calendar deform. It may be some time, if ever, before source code for the Bahá'í calendar is posted on this site.
The nineteen months are named as follows. The dates given can be off by up to two days; the equinox sometimes falls on 22 March, and Gregorian leap years can confuse this schedule by another day.
Bahá Splendour 21 March 8 April Jalál Glory 9 April 27 April Jamál Beauty 28 April 16 May 'Azamat Grandeur 17 May 4 June Núr Light 5 June 23 June Rahmat Mercy 24 June 12 July Kalimát Words 13 July 31 July Kamál Perfection 1 August 19 August Asmá' Names 20 August 7 September 'Izzat Might 8 September 26 September Mashíyyat Will 27 September 15 October 'Ilm Knowledge 16 October 3 November Qudrat Power 4 November 22 November Qawl Speech 23 November 11 December Masá'il Questions 12 December 30 December Sharaf Honour 31 December 18 January Sultán Sovereignty 19 January 6 February Mulk Dominion 7 February 25 February (insert four or five intercalary days here) 'Alá Loftiness 2 March 20 March
The days are given the same names as the months. Thus, for example, the second day of the third month would be called the 'day of Jalál in the month of Jamál.'
The reasons for adopting this calendar appear to be basically the same as those given for adopting the French Revolutionary calendar. There was a desire to show a complete split from the Gregorian calendar, with its irregular months named for Roman emperors; and a lunar calendar would have been too much like the Islamic calendar. Furthermore, the number 19 seems to have some significance; in the Bahá'í calendar, nineteen years form a cycle called a Váhid, and nineteen of these cycles (361 years) constitute a period called Kull-i-Shay. (None of the sources I found said anything about the fact that the nineteen-year cycle matches the Metonic cycle of lunar phases, but the coincidence is an interesting one. And the only sources I could find were more "religion" oriented than "astronomy" oriented, so they could easily not have been aware of this fact.)
The years in the Bahá'í calendar are counted from 23 May 1844, the date the Báb (regarded by Bahá'ís as the messenger of God; the name is loosely translated as "Gate") announced the closing of the current era, and that one would come soon to open a new era. Bahá'ís believe this promise was fulfilled in the person of Bahá'u'lláh. The result is that year 156 ("B.E. 156") began with the vernal equinox of (Gregorian) March 1999.
The Celtic Tree (Druid?) calendar: This calendar represents a somewhat unusual approach: it's a solar calendar, with thirteen months of 28 days apiece. There is an extra day (two days in leap years) at the end of the year. (Supposedly, this led to the expression "a year and a day", but I am a little suspicious of the folk etymology here.) The months are named after trees:
Celtic Tree Approximate Gregorian name: name: dates: Beth (Birch) Dec 24-Jan 20 Luis (Rowan) Jan 21-Feb 17 Nuin (Ash) Feb 18-Mar 17 Fearn (Alder) Mar 18-Apr 14 Saille (Willow) Apr 15-May 12 Huath (Hawthorn) May 13-Jun 9 Duir (Oak) Jun 10-Jul 7 Tinne (Holly) Jul 8-Aug 4 Coll (Hazel) Aug 5-Sep 1 Muin (Vine) Sep 2-Sep 29 Gort (Ivy) Sep 30-Oct 27 Ngetal (Reed) Oct 28-Nov 24 Ruis (Elder) Nov 25-Dec 22 Secret of the Unhewn Stone (intercalary day): Dec 23
The site that provided the above list points out that "...it seems unlikely this is the way the Celtic Tree calendar was originally laid out... but modern-day new age practitioners need a simple calendar, and this certainly fits the bill."
Concrete detail concerning this calendar is somewhat limited. I've found no information as to when leap years are inserted, or when the calendar begins. I suspected that it might actually be a modern creation, until I got the following e-mail:
In reference to your desire for more information on the Celtic Tree Calendar: while it is true that the currently known Celtic Tree Calendar is a streamlined and modernized version, it has its basis in a calendar used by the Druids in pre-Christian times. However, the calendar differed greatly from place to place, and the current Beth-Luis-Nion format was the older order of letters in the Ogham alphabet. Later the order became Beth-Luis-Fern, and whoever made up the 'New Age' calendar probably just picked one of the two at random, and everyone after simply followed their lead. The latest contemporary reference to the calendar is in the Book of Ballymote, written in the fifteenth century, which includes a treatise on the calendar and the Ogham alphabet. Also, several studies on the Ogham and the associated calendar took place between 1860-1920. In any case, the truth is, the calendar definitely -did- exist, but the original form of the calendar, varying greatly even at the time of its usage, is impossible to discover. Hope this was helpful, Jeremy Smith, University of North Texas
Still, this calendar does have certain interesting properties. There are exactly four weeks per month, so all the months in a given year start on the same day of the week... this is convenient. The year is not as easily broken into "quarters" as a twelve-month calendar would be, but the quarters at least fall on week boundaries (Q1 = months 1-3 plus the first week of month 4; Q2 = remainder of month 4, months 5-6, and first half of month 7; and so on). Some proposed "reformed" calendars, such as the International Fixed Calendar (originally known as the Positivist Calendar), also use a thirteen-month year with 28-day months, plus one or two intercalary days, for just this reason.
Note concerning the year 2000: There has been widespread hairsplitting to the effect that the year 2000 is not really the start of a new century or millennium. Usually, some statement to the effect of "there was no year zero" is brought up.
This statement is, however, somewhere between being false and being not the entire truth. It is true that, when the system of numbering years after the presumed birth of Christ was instituted, negative numbers were unknown in Europe. The use of "BC" years appears to be the creation of the French Jesuit theologian Dionysius Petavius, a.k.a. Denys Pétau (1583-1652), who used those letters after ancient dates in his Opus de Doctrina Temporum in 1627. * (I have been unable to determine exactly how dates before 1 AD were dealt with before 1627; it's true that the use of absolute dates in medieval and pre-medieval works is rare, and that dates such as "N years from this event" are the norm. Still, I assume that the issue must have arisen at some point!)
In Petavius' system, the year preceding 1 AD is 1 BC, with no intervening year zero. Currently, astronomers use a system in which there is indeed a year zero, and in which "BC" years simply become "negative" years. (The Explanatory Supplement to the Astronomical Almanac states that the new system was introduced by the astronomer Jacques Cassini, in 1740.) This is a much more logical system, and it can be argued that it is in far wider use than the old "historical" system. It does result in a situation, though, where the year 1234 BC (historical system) is the same year as -1233 (astronomical system).
I am more of an astronomer than an historian, and the idea that "there was no year zero" strikes me as logically absurd. Therefore, from my point of view, 1 Jan 2000 marks the beginning of the Third Millennium.
Sean Oberle has pointed out a further problem with "no year zero": there is also no "zero o'clock". One could wrongly conclude that each day begins at 1:00 AM, since there is no '0:00 AM' (unless one is an astronomer or soldier). Furthermore, he has written an article arguing persuasively that Dionysius Exiguus regarded 1 AD as the second year of his count, much as astronomers do.
Note: The creation of the 'BC' convention is commonly ascribed to the English historian Bede, sometime around the eighth century. The Explanatory Supplement to the Astronomical Almanac mentions this, and gives a reference to:
Colgrave, B. and Mynors, R.A.B. (1969). Bede's Ecclesiastical History of the English People, Oxford.
I originally cited that information, but received an inquiry from Claus Tøndering, author of the Calendar FAQ. He mentions that his Web site once had the same statement about Bede originating the 'BC' convention, but that two historians told him that there is no good evidence for this; they claim the convention arose a few centuries later.
And a reference at the Bureau des Longitudes WWW site put the origin of the 'BC' convention much later... sometime in the 18th century! An excerpt:
---------- Begin clip ----------- Case of the years: For the historians, since the XVIIIth century, the year which precedes year 1 of the Christian era is noted " 1 before J.-C. ": it is a leap year. The leap years following one another every 4 years, they are thus years 1, 5, 9... before J.-.C; the rule of the divisibility by 4 cannot be applied any more. The astronomers, since J. Cassini (1740), use an algebraic notation. They call year 0 the year 1 before J.-C. and count the former years negatively. As follows... ---------- End clip -----------
Still more recently (13 July 2001), I received the following e-mail:
I suppose you've heard by now.... The AD-BC system of organizing dates was invented by Dionysius Petavius circa 1627. You can read all about it in "The Measure of Times Past" by Donald J. Wilcox, p. 207. The general use of AD dating is not much older. There are early AD-dated documents, but hardly any monuments (chiseled in stone) bearing AD dates before the 15th century. I enjoyed reading your rap on calendars. Best, henryz
...which led me to do some more research, resulting in the above comments on the origin of the BC system.