*This brilliant little tool is the work of John Walker at Fourmilab.
It has been slightly modified (wording only) from the original Public Domain version downloadable
at that site. Other interesting and valuable tools and utilities can be downloaded
from there free of charge. - Richard T. Dodds
*

Welcome to Fourmilab's calendar converter! This page allows you to interconvert dates in a variety of calendars, both civil and computer-related. All calculations are done in JavaScript executed in your own browser. To use the page, your browser must support JavaScript and you must not have disabled execution of that language.

The Gregorian calendar is a minor correction to the Julian. In the
Julian calendar every fourth year is a leap year in which February has
29, not 28 days, but in the Gregorian, years divisible by 100 are
*not* leap years unless they are also divisible by 400. How
prescient was Pope Gregory! Whatever the problems of Y2K, they won't
include sloppy programming which assumes every year divisible by 4 is
a leap year since 2000, unlike the previous and subsequent years
divisible by 100, *is* a leap year. As in the Julian calendar,
days are considered to begin at midnight.

The average length of a year in the Gregorian calendar is 365.2425 days compared to the actual solar tropical year (time from equinox to equinox) of 365.24219878 days, so the calendar accumulates one day of error with respect to the solar year about every 3300 years. As a purely solar calendar, no attempt is made to synchronise the start of months to the phases of the Moon.

While one can't properly speak of "Gregorian dates" prior to the adoption of the calendar in 1582, the calendar can be extrapolated to prior dates. In doing so, this implementation uses the convention that the year prior to year 1 is year 0. This differs from the Julian calendar in which there is no year 0--the year before year 1 in the Julian calendar is year -1. The date December 30th, 0 in the Gregorian calendar corresponds to January 1st, 1 in the Julian calendar.

A slight modification of the Gregorian calendar would make it even more
precise. If you add the additional rule that years evenly divisible
by 4000 are *not* leap years, you obtain an average solar year
of 365.24225 days per year which, compared to the actual mean year
of 365.24219878, is equivalent to an error of one day over a period
of about 19,500 years; this is comparable to errors due to tidal
braking of the rotation of the Earth.

While any event in recorded human history can be written as a positive Julian day number, when working with contemporary events all those digits can be cumbersome. A

In the Julian calendar the average year has a length of 365.25 days.
compared to the actual solar tropical year
of 365.24219878 days. The calendar thus accumulates one day of
error with respect to the solar year every 128 years.
Being a purely solar calendar, no attempt is made to synchronise the
start of months to the phases of the Moon.

Years are classified as *common* (normal) or
*embolismic* (leap) years which occur in a 19 year
cycle in years 3, 6, 8, 11, 14, 17, and 19. In an
embolismic (leap) year, an extra *month* of 29 days,
"Veadar" or "Adar II", is added to the end of the year after
the month "Adar", which is designated "Adar I" in such
years. Further, years may be *deficient*,
*regular*, or *complete*, having respectively
353, 354, or 355 days in a common year and 383, 384, or 385
days in embolismic years. Days are defined as beginning at
sunset, and the calendar begins at sunset the night before
Monday, October 7, 3761 B.C.E. in the Julian calendar, or
Julian day 347995.5. Days are numbered with Sunday as day 1,
through Saturday: day 7.

The average length of a month is 29.530594 days, extremely close
to the mean *synodic month* (time from new Moon to
next new Moon) of 29.530588 days. Such is the accuracy that
more than 13,800 years elapse before a single day
discrepancy between the calendar's average reckoning of the
start of months and the mean time of the new Moon.
Alignment with the solar year is better than the Julian
calendar, but inferior to the Gregorian. The average length
of a year is 365.2468 days compared to the actual solar tropical
year (time from equinox to equinox) of 365.24219 days, so
the calendar accumulates one day of error with respect to
the solar year every 216 years.

Each cycle of 30 years thus contains 19 normal years of 354
days and 11 leap years of 355, so the average length of a
year is therefore ((19 × 354) + (11 × 355)) / 30 =
354.365... days, with a mean length of month of 1/12 this
figure, or 29.53055... days, which closely approximates the
mean *synodic month* (time from new Moon to next new
Moon) of 29.530588 days, with the calendar only slipping one
day with respect to the Moon every 2525 years. Since the calendar
is fixed to the Moon, not the solar year, the months shift
with respect to the seasons, with each month beginning about
11 days earlier in each successive solar year.

The calendar presented here is the most commonly used
civil calendar in the Islamic world; for religious purposes
months are defined to start with the first observation of
the crescent of the new Moon.

As one of the few calendars designed in the era of accurate
positional astronomy, the Persian calendar uses a very complex
leap year structure which makes it the most accurate solar
calendar in use today. Years are grouped into *cycles*
which begin with four normal years after which every fourth
subsequent year in the cycle is a leap year. Cycles are grouped
into *grand cycles* of either 128 years (composed of
cycles of 29, 33, 33, and 33 years) or 132 years, containing
cycles of of 29, 33, 33, and 37 years. A *great grand
cycle* is composed of 21 consecutive 128 year grand cycles
and a final 132 grand cycle, for a total of 2820 years. The
pattern of normal and leap years which began in 1925 will not
repeat until the year 4745!

Each 2820 year great grand cycle contains 2137 normal
years of 365 days and 683 leap years of 366 days,
with the average year length over the great grand cycle
of 365.24219852. So close is this to the actual
solar tropical year of 365.24219878 days that the
Persian calendar accumulates an error of one day
only every 3.8 million years. As a purely solar
calendar, months are not synchronised with the
phases of the Moon.

Cycle | Composed of | Total Days | Years (approx.) |
---|---|---|---|

kin
| 1 | ||

uinal
| 20 kin | 20 | |

tun
| 18 uinal | 360 | 0.986 |

katun
| 20 tun | 7200 | 19.7 |

baktun
| 20 katun | 144,000 | 394.3 |

pictun
| 20 baktun | 2,880,000 | 7,885 |

calabtun
| 20 piktun | 57,600,000 | 157,704 |

kinchiltun
| 20 calabtun | 1,152,000,000 | 3,154,071 |

alautun
| 20 kinchiltun | 23,040,000,000 | 63,081,429 |

The Mayans believed at at the conclusion of each *pictun* cycle of
about 7,885 years the universe is destroyed and re-created. You will be relieved
to observe that the present cycle will not end until Columbus Day, October 12,
4772 in the Gregorian calendar. It's amusing to observe that the longest of
the cycles in the Mayan calendar, *alautun*, about 63 million years,
is comparable to the 65 million years since the impact which brought down the
curtain on the dinosaurs--an impact which occurred near the Yucatan peninsula
where, almost an *alautun* later, the Mayan civilisation flourished.
There's no point in writing dates using the longer cycles, so we dispense with
them here.

Dates in the Long Count calendar are written, by convention, as:

and thus resemble present-day Internet IP addresses!

For civil purposes the Mayans used the *Haab*
calendar in which the year was divided into 18 named periods
of 20 days each, followed by five *Uayeb* days
not considered part of any period. Dates in this
calendar are written as a day number (0 to 19 for regular
periods and 0 to 4 for the days of *Uayeb*) followed
by the name of the period. This calendar has no concept of
year numbers; it simply repeats at the end of the complete
365 day cycle. Consequently, it is not possible, given a
date in the Haab calendar, to determine the Long
Count or year in other calendars. The 365 day cycle
provides better alignment with the solar year than the 360
day *tun* of the Long Count but, lacking a leap year
mechanism, the Haab calendar shifted one day with
respect to the seasons about every four years.

The Mayan religion employed the *Tzolkin* calendar,
composed of 20 named periods of 13 days. Unlike the
Haab calendar, in which the day numbers increment
until the end of the period, at which time the next period
name is used and the day count reset to 0, the names and numbers
in the Tzolkin calendar advance in parallel. On each
successive day, the day number is incremented by 1, being
reset to 0 upon reaching 13, and the next in the cycle of twenty
names is affixed to it. Since 13 does not evenly divide 20,
there are thus a total of 260 day number and period names before
the calendar repeats. As with the Haab calendar, cycles
are not counted and one cannot, therefore, convert a Tzolkin
date into a unique date in other calendars. The 260 day cycle
formed the basis for Mayan religious events and has no relation
to the solar year or lunar month.

The Mayans frequently specified dates using *both* the Haab
and Tzolkin calendars; dates of this form repeat only
every 52 solar years.

The year begins at the equinox, March 21, the Feast of
Naw-Rúz; days begin at sunset. Years have their own
cycle of 19 names, called the *Váhid*. Successive cycles of
19 years are numbered, with cycle 1 commencing on March 21, 1844,
the year in which the Báb announced his prophecy.
Cycles, in turn, are assembled into *Kull-I-Shay*
super-cycles of 361 (19˛) years. The first *Kull-I-Shay*
will not end until Gregorian calendar year 2205. A week of seven
days is superimposed on the calendar, with the week considered to
begin on Saturday. Confusingly, three of the names of weekdays
are identical to names in the 19 name cycles for days and months.

The National Calendar of India is composed of 12 months.
The first month, *Caitra*, is 30 days in normal
and 31 days in leap years. This is followed by five
consecutive 31 day months, then six 30 day months. Leap
years in the Indian calendar occur in the same years as
as in the Gregorian calendar; the two calendars thus
have identical accuracy and remain synchronised.

Years in the Indian calendar are counted from the start of
the Saka Era, the equinox of March 22nd of year 79 in the
Gregorian calendar, designated day 1 of month
Caitra of year 1 in the Saka Era. The calendar was
officially adopted on 1 Caitra, 1879 Saka Era, or
March 22nd, 1957 Gregorian. Since year 1 of the Indian
calendar differs from year 1 of the Gregorian, to
determine whether a year in the Indian calendar is a leap
year, add 78 to the year of the Saka era then
apply the Gregorian calendar rule to the sum.

The calendar consists of 12 months of 30 days each, followed
by a five- or six-day holiday period, the
*jours complémentaires* or
*sans-culottides*. Months are grouped into four
seasons; the three months of each season end with the same
letters and rhyme with one another. The calendar begins on
Gregorian date September 22nd, 1792, the September
equinox and date of the founding of the First Republic.
This day is designated the first day of the month of
Vendémiaire in year 1 of the Republic. Subsequent years
begin on the day in which the September equinox occurs as
reckoned at the Paris meridian. Days begin at true solar
midnight. Whether the *sans-culottides* period
contains five or six days depends on the actual
date of the equinox. Consequently, there is no leap year rule
*per se*: 366 day years do not recur in a regular
pattern but instead follow the dictates of astronomy. The
calendar therefore stays perfectly aligned with the seasons.
No attempt is made to synchronise months with the phases of
the Moon.

The Republican calendar is rare in that it has no
concept of a seven day week. Each thirty day month
is divided into three *décades* of ten days
each, the last of which, *décadi*, was the
day of rest. (The word "*décade*" may
confuse English speakers; the
French noun denoting ten years is "*décennie*".)
The names of days in the *décade* are derived from
their number in the ten day sequence. The five or
six days of the *sans-culottides* do not bear
the names of the *décade*. Instead, each of these holidays
commemorates an aspect of the republican spirit.
The last, *jour de la Révolution*, occurs only
in years of 366 days.

Napoléon abolished the Republican calendar in favour of the Gregorian on January 1st, 1806. Thus France, one of the first countries to adopt the Gregorian calendar (in December 1582), became the only country to subsequently abandon and then re-adopt it. During the period of the Paris Commune uprising in 1871 the Republican calendar was again briefly used.

The original decree which established the Republican calendar contained a
contradiction: it defined the year as starting on the day of the true autumnal
equinox in Paris, but further prescribed a four year cycle called *la Franciade*,
the fourth year of which would end with *le jour de la Révolution* and
hence contain 366 days. These two specifications are incompatible, as 366 day
years defined by the equinox do not recur on a regular four year schedule. This
problem was recognised shortly after the calendar was proclaimed, but the calendar
was abandoned five years before the first conflict would have occurred and the
issue was never formally resolved. Here we assume the equinox rule prevails,
as a rigid four year cycle would be no more accurate than the Julian calendar,
which couldn't possibly be the intent of its enlightened Republican designers.

In solar calendars such as the Gregorian, only days and years have physical significance: days are defined by the rotation of the Earth, and years by its orbit about the Sun. Months, decoupled from the phases of the Moon, are but a memory of forgotten lunar calendars, while weeks of seven days are entirely a social construct--while most calendars in use today adopt a cycle of seven day names or numbers, calendars with name cycles ranging from four to sixty days have been used by other cultures in history.

ISO 8601 permits us to jettison the historical and cultural
baggage of weeks and months and express a date simply by
the year and day number within that year, ranging from 001
for January 1st through 365 (366 in a leap year) for
December 31st. This format makes it easy to do arithmetic
with dates within a year, and only slightly more complicated
for periods which span year boundaries. You'll
see this representation used in project planning and for specifying delivery
dates. ISO dates in this form are written as "**YYYY-DDD**",
for example 2000-060 for February 29th, 2000; leading zeroes
are always written in the day number, but the hyphen may be
omitted for brevity.

All ISO 8601 date formats have the advantages of being fixed length (at least until the Y10K crisis rolls around) and, when stored in a computer, of being sorted in date order by an alphanumeric sort of their textual representations. The ISO week and day and day of year calendars are derivative of the Gregorian calendar and share its accuracy.

Many machines on which Unix was initially widely deployed
could not support arithmetic on integers longer than 32 bits
without costly multiple-precision computation in software.
The internal representation of time was therefore chosen to be
the number of seconds elapsed since
00:00 Universal time on January 1, 1970 in the Gregorian
calendar (Julian day 2440587.5), with time stored as a 32
bit signed integer (`long` in early C implementations).

The influence of Unix time representation has spread well beyond
Unix since most C and C++ libraries on other systems provide
Unix-compatible time and date functions. The major drawback of
Unix time representation is that, if kept as a 32 bit signed
quantity, on January 19, 2038 it will go negative, resulting in
chaos in programs unprepared for this. Unix and C
implementations wisely (for reasons described below) define the
result of the `time()` function as type `time_t`,
which leaves the door open for remediation (by changing the
definition to a 64 bit integer, for example) before the clock
ticks the dreaded doomsday second.

C compilers on Unix systems prior to 7th Edition lacked the
32-bit `long` type. On earlier systems `time_t`,
the value returned by the `time()` function, was an array
of two 16-bit `int`s which, concatenated, represented the
32-bit value. This is the reason why `time()` accepts a
pointer argument to the result (prior to 7th Edition it returned
a status, not the 32-bit time) and `ctime()` requires a
pointer to its input argument. Thanks to Eric Allman (author
of `sendmail`) for
pointing out these historical nuggets.

You'd be entitled to think, therefore, that conversion back and forth between
PC Excel serial values and Julian day numbers would simply be a matter of adding
or subtracting the Julian day number of December 31, 1899 (since the PC Excel
days are numbered from 1). If you have a copy of PC Excel, fire it up, format
a cell as containing a date, and type 60 into it: out pops "February 29, 1900".
News apparently travels *very* slowly from Rome to Redmond--ever since
Pope Gregory revised the calendar in 1582, years divisible by 100 have *not*
been leap years, and consequently the year 1900 contained no February 29th.
Due to this morsel of information having been lost somewhere between the Vatican
and Seattle, all Excel day numbers for days subsequent to February 28th, 1900
are one day greater than the actual day count from January 1, 1900. Further,
note that any computation of the number of days in a period which begins in
January or February 1900 and ends in a subsequent month will be off by one--the
day count will be one greater than the actual number of days elapsed.

By the time the 1900 blunder was discovered, Excel users had
created millions of spreadsheets containing incorrect
day numbers, so Microsoft decided to leave the error in place
rather than force users to convert their spreadsheets, and the
error remains to this day. Note, however, that *only 1900*
is affected; while the first release of Excel probably also
screwed up all years divisible by 100 and hence implemented a
purely Julian calendar, contemporary versions do correctly
count days in 2000 (which is a leap year, being divisible by
400), 2100, and subsequent end of century years.

PC Excel day numbers are valid only between 1 (January 1, 1900) and
2958465 (December 31, 9999). Although a serial day counting scheme
has no difficulty coping with arbitrary date ranges or days before
the start of the epoch (given sufficient precision in the representation
of numbers), Excel doesn't do so. Day 0 is deemed the idiotic
January 0, 1900 (at least in Excel 97), and negative days and
those in Y10K and beyond are not handled at all. Further, old
versions of Excel did date arithmetic using 16 bit quantities
and did not support day numbers greater than 65380 (December
31, 2078); I do not know in which release of Excel this
limitation was remedied.

Macintosh Excel day numbers are valid only between 0
(January 1, 1904) and 2957003 (December 31, 9999). Although
a serial day counting scheme has no difficulty coping with
arbitrary date ranges or days before the start of the epoch
(given sufficient precision in the representation of
numbers), Excel doesn't do so. Negative days and those in
Y10K and beyond are not handled at all. Further, old
versions of Excel did date arithmetic using 16 bit
quantities and did not support day numbers greater than
63918 (December 31, 2078); I do not know in which release of
Excel this limitation was remedied.

- Meeus, Jean. Astronomical Algorithms. Richmond: Willmann-Bell, 1991. ISBN 0-943396-35-2.
- The essential reference for computational positional astronomy.
- P. Kenneth Seidelmann (ed.) Explanatory Supplement to the Astronomical Almanac. Sausalito CA: University Science Books, 1992. ISBN 0-935702-68-7.
- Authoritative reference on a wealth of topics related to computational geodesy
and astronomy. Various calendars are described in depth, including techniques
for interconversion.
- The Institut de mécanique céleste et de calcul des éphémérides in Paris
provides excellent on-line descriptions of a variety of calendars.

by John Walker

March, MMII