This page allows you to interconvert dates in a variety of calendars, both civil and computer-related.
You only need to fill in one calendar and the rest are automatically calculated.
The Mayans employed three calendars, all organised as hierarchies
of cycles of days of various lengths. The Long Count was
the principal calendar for historical purposes, the Haab
was used as the civil calendar, while the Tzolkin
was the religious calendar. All of the Mayan calendars
are based on serial counting of days without means for synchronising
the calendar to the Sun or Moon, although the Long Count and Haab
calendars contain cycles of 360 and 365 days, respectively, which
are roughly comparable to the solar year. Based purely on counting
days, the Long Count more closely resembles the
Julian Day system and contemporary computer representations of
date and time than other calendars devised in antiquity.
Also distinctly modern in appearance is that days and
cycles count from zero, not one as in most other calendars,
which simplifies the computation of dates, and that numbers
as opposed to names were used for all of the cycles.
| 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 Long Count calendar is organised into the
hierarchy of cycles shown at the right.
Each of the cycles is composed of 20 of the next
shorter cycle with the exception of the tun,
which consists of 18 uinal of 20 days each.
This results in a tun of 360 days, which maintains
approximate alignment with the solar year over modest
intervals—the calendar comes undone from the
Sun 5 days every tun.
The Mayans believed at at the conclusion of each
pictun cycle of about 7,885 years the universe is
destroyed and re-created. Those with apocalyptic
inclinations will be relieved to observe that the present
cycle will not end until Columbus Day, October 12, 4772 in
the Gregorian calendar. Speaking of apocalyptic events,
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. If the universe is going to be destroyed and
the end of the current pictun, 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:
baktun . katun . tun . uinal .
kin
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 Gregorian calendar was proclaimed
by Pope Gregory XIII and took
effect in most Catholic states in 1582, in which October 4, 1582 of
the Julian calendar was followed by October 15 in the new calendar,
correcting for the accumulated discrepancy between the Julian calendar
and the equinox as of that date. When comparing historical dates,
it's important to note that the Gregorian calendar, used universally
today in Western countries and in international commerce, was
adopted at different times by different countries. Britain and
her colonies (including what is now the United States), did not switch
to the Gregorian calendar until 1752, when Wednesday 2nd September
in the Julian calendar dawned as Thursday the 14th in the Gregorian.
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.
Astronomers, unlike historians, frequently need to do arithmetic
with dates. For example: a double star goes into eclipse every
1583.6 days and its last mid-eclipse was measured to be on
October 17, 2003 at 21:17 UTC. When is the next? Well, you could
get out your calendar and count days, but it's far easier
to convert all the quantities in question to Julian day numbers
and simply add or subtract. Julian days simply enumerate the days
and fraction which have elapsed since the start of the
Julian era, which is defined as beginning at noon
on Monday, 1st January of year 4713 B.C.E. in the Julian
calendar. This date is defined in terms of a cycle of years,
but has the additional advantage that all known historical astronomical
observations bear positive Julian day numbers, and periods can
be determined and events extrapolated by simple addition and
subtraction. Julian dates are a tad eccentric in starting at
noon, but then so are astronomers (and systems programmers!)—when
you've become accustomed to rising after the “crack of noon” and
doing most of your work when the Sun is down, you appreciate
recording your results in a calendar where the date doesn't change
in the middle of your workday. But even the Julian day convention
bears witness to the eurocentrism of 19th century astronomy—noon
at Greenwich is midnight on the other side of the world. But the Julian
day notation is so deeply embedded in astronomy that it is unlikely
to be displaced at any time in the foreseeable future. It is an ideal
system for storing dates in computer programs, free of cultural bias
and discontinuities at various dates, and can be readily transformed
into other calendar systems, as the source code for this page illustrates.
Use Julian days and fractions (stored in 64 bit or longer floating
point numbers) in your programs, and be ready for Y10K, Y100K,
and Y1MM!
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 Modified
Julian Day (MJD) is created by subtracting 2400000.5
from a Julian day number, and thus represents the number of
days elapsed since midnight (00:00) Universal Time on
November 17, 1858. Modified Julian Days are widely used to
specify the epoch in tables of orbital elements of
artificial Earth satellites. Since no such objects existed
prior to October 4, 1957, all satellite-related MJDs are
positive.
The Julian calendar was proclaimed by Julius Cæsar in 46 B.C.
and underwent several modifications before reaching its final
form in 8 C.E. The Julian calendar differs from the Gregorian
only in the determination of leap years, lacking the correction
for years divisible by 100 and 400 in the Gregorian calendar.
In the Julian calendar, any positive year is a leap year if
divisible by 4. (Negative years are leap years if the absolute value
divided by 4 yields a remainder of 1.) Days are considered to
begin at midnight.
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.
The Hebrew (or Jewish) calendar attempts to simultaneously
maintain alignment between the months and the seasons and
synchronise months with the Moon—it is thus deemed a
“luni-solar calendar”. In addition, there are constraints
on which days of the week on which a year can begin and to shift
otherwise required extra days to prior years to keep the
length of the year within the prescribed bounds.
This isn't easy, and the
computations required are correspondingly intricate.
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.
The Islamic calendar is purely lunar and consists of twelve
alternating months of 30 and 29 days, with the final 29 day month
extended to 30 days during leap years. Leap years follow a 30 year
cycle and occur in years 1, 5, 7, 10, 13, 16, 18, 21, 24, 26, and 29.
Days are considered to begin at sunset. The calendar begins on
Friday, July 16th, 622 C.E. in the Julian calendar, Julian day
1948439.5, the day of Muhammad's flight from Mecca to Medina, with
sunset on the preceding day reckoned as the first day of the first
month of year 1 A.H.—“Anno
Hegiræ”—the Arabic word for
“separate” or “go away”. The names for the
days are just their numbers: Sunday is the first day and Saturday the
seventh; the week is considered to begin on Saturday.
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.
The modern Persian calendar was adopted in 1925, supplanting
(while retaining the month names of) a traditional
calendar dating from the eleventh century. The calendar
consists of 12 months, the first six of which are 31
days, the next five 30 days, and the final month 29
days in a normal year and 30 days in a leap year.
Each year begins on the day in which the March equinox occurs at or
after solar noon at the reference longitude for Iran Standard Time
(52°30' E). Days begin at midnight in the standard time
zone. There is no leap year rule; 366 day years do not recur in a
regular pattern but instead occur whenever that number of days elapse
between equinoxes at the reference meridian. The calendar therefore
stays perfectly aligned with the seasons. No attempt is made to
synchronise months with the phases of the Moon.
There is some controversy about the reference meridian at which the
equinox is determined in this calendar. Various sources cite
Tehran, Esfahan, and the central meridian of Iran Standard Time as
that where the equinox is determined; in this implementation, the
Iran Standard Time longitude is used, as it appears that this is
the criterion used in Iran today. As this calendar is proleptic for all
years prior to 1925 C.E., historical
considerations regarding the capitals of Persia and Iran do not
seem to apply.
Ahmad Birashk proposed an alternative means of determining leap years
for the Persian calendar. His technique avoids the need to determine
the moment of the astronomical equinox, replacing it with a very
complex leap year structure. 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!
This is not the calendar in use in Iran! It is
presented here solely because there are many computer implementations
of the Persian calendar which use it (with which users may wish to
compare results), and because its baroque complexity enthralls
programmers like myself.
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
this 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.
The Bahá'í calendar is a solar calendar organised as a
hierarchy of cycles, each of length 19, commemorating the 19
year period between the 1844 proclamation of the Báb in
Shiraz and
the revelation by Bahá'u'lláh in 1863. Days are named in a
cycle of 19 names. Nineteen of these cycles of 19 days,
usually called “months” even though they have nothing
whatsoever to do with the Moon, make up a year, with a
period between the 18th and 19th months referred to as
Ayyám-i-Há not considered part of any month; this
period is four days in normal years and five days in leap
years. The rule for leap years is identical to that of the
Gregorian calendar, so the Bahá'í calendar shares its
accuracy and remains synchronised. The same cycle of 19
names is used for days and months.
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.
A bewildering variety of calendars have been and continue to be
used in the Indian subcontinent. In 1957 the Indian
government's Calendar Reform Committee adopted the National
Calendar of India for civil purposes and, in addition,
defined guidelines to standardise computation of the
religious calendar, which is based on astronomical
observations. The civil calendar is used throughout India
today for administrative purposes, but a variety of
religious calendars remain in use. We present the civil
calendar here.
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 French Republican calendar was adopted by a
decree of La
Convention Nationale on Gregorian date October 5, 1793
and went into effect the following November 24th, on which
day Fabre d'Églantine proposed to the Convention
the names for the months. It incarnates the revolutionary
spirit of “Out with the old! In with the relentlessly
rational!” which later gave rise in 1795 to the metric
system of weights and measures which has proven more durable
than the Republican calendar.
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.
The
International Standards Organisation
(ISO) issued
Standard ISO 8601, “Representation of Dates” in 1988,
superseding the earlier ISO 2015. The bulk of the standard
consists of standards for representing dates in the
Gregorian calendar including the highly recommended
“YYYY-MM-DD” form which is unambiguous, free of cultural
bias, can be sorted into order without rearrangement, and is
Y9K compliant. In addition, ISO 8601 formally defines the
“calendar week” often encountered in commercial transactions
in Europe. The first calendar week of a year: week 1, is
that week which contains the first Thursday of the year (or,
equivalently, the week which includes January 4th of the
year; the first day of that week is the previous Monday).
The last week: week 52 or 53 depending on the
date of Monday in the first week, is that which contains
December 28th of the year. The first ISO calendar week of a
given year starts with a Monday which can be as early as
December 29th of the previous year or as late as January
4th of the present; the last calendar week can end as late
as Sunday, January 3rd of the subsequent year.
ISO 8601 dates in year, week, and day form are written
with a “W” preceding the week number, which bears a leading
zero if less than 10, for example February 29th, 2000
is written as 2000-02-29 in year, month, day format and
2000-W09-2 in year, week, day form; since the day number
can never exceed 7, only a single digit is required.
The hyphens may be elided for brevity and the day number
omitted if not required. You will frequently see date of
manufacture codes such as “00W09” stamped on products; this
is an abbreviation of 2000-W09, the ninth week of year 2000.
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.
Development of the Unix operating system began at Bell Laboratories
in 1969 by Dennis Ritchie and Ken Thompson, with the first
PDP-11 version becoming operational in February 1971. Unix wisely
adopted the convention that all internal dates and times (for example,
the time of creation and last modification of files) were kept in
Universal Time, and converted to local time based on a per-user
time zone specification. This far-sighted choice has made it
vastly easier to integrate Unix systems into far-flung networks
without a chaos of conflicting time settings.
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 ints 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.
Spreadsheet calculations frequently need to do arithmetic with date
and time quantities—for example, calculating the interest on a loan
with a given term. When Microsoft Excel was introduced for the PC
Windows platform, it defined dates and times as “serial values”, which
express dates and times as the number of days elapsed since midnight
on January 1, 1900 with time given as a fraction of a day. Midnight
on January 1, 1900 is day 1.0 in this scheme. Time zone is
unspecified in Excel dates, with the NOW() function returning
whatever the computer's clock is set to—in most cases local time, so
when combining data from machines in different time zones you usually
need to add or subtract the bias, which can differ over the year due
to observance of summer time. Here we assume Excel dates represent
Universal (Greenwich Mean) time, since there isn't any other rational
choice. But don't assume you can always get away with this.
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).
But this is a Microsoft calendar, remember, so one must
first look to make sure it doesn't contain one of those bonehead
blunders characteristic of Microsoft. As is usually the case,
one doesn't have to look very far. 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 Holy See and
the Infernal Seattle monopoly,
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.
Having saddled every PC Excel user with a defective date
numbering scheme wasn't enough for Microsoft—nothing ever is.
Next, they proceeded to come out with a Macintosh version
of Excel which uses an entirely different day numbering
system based on the MacOS native time format which counts
days elapsed since January 1, 1904. To further obfuscate
matters, on the Macintosh they chose to number days from zero
rather than 1, so midnight on January 1, 1904 has serial
value 0.0. By starting in 1904, they avoided screwing up 1900
as they did on the PC. So now Excel users who interchange data
have to cope with two incompatible schemes for counting days, one
of which thinks 1900 was a leap year and the other which
doesn't go back that far. To compound the fun, you can now
select either date system on either platform, so you can't be
certain dates are compatible even when receiving data from
another user with same kind of machine you're using. I'm
sure this was all done in the interest of the “efficiency”
of which Microsoft is so fond. As we all know, it would take a computer
almost forever to add or subtract four in order to make everything
seamlessly interchangeable.
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.