I say instead that it began on 2000 January 1, and have several different ways of looking at this:
The problem with regarding 2001 January 1 as the start of the New Millennium stems from the beginning of the calendar. The first year is called 1, or 1 ACE (or AD). It may seem natural to call the first year the year 1, and indeed it may make sense if years were like books which are numbered 1, 2, ... There is no fraction of a book to be concerned about. However, with years, there are fractions of a year: months, hours, milliseconds and so forth. Time is measured on a line, not on a series of discrete points. The starting place on a line is not 1. It is 0. Therefore, the starting point on the time line should be called 0, not 1.
It is this failure to recognize that 0 is the origin on a line rather than 1 that causes several problems with our numbering schemes. The Romans did not have a zero; their zeroless Roman numerals hampered the development of Roman mathematics, for they needed a different symbol (C, X, I) for each tens place because otherwise "I" could mean one, ten, or a hundred. It was not until the Arabic notion of zero and of putting a zero in a place that does not hold anything came to the Western world before it could advance technologically. Then a hundred became 100.
However, the BC and AD systems were set up before this happened. As a result, there is no year 0 in the traditional system. The year 1 BC is followed by 1 AD. This does not make sense, since -1 and 1 are not adjacent numbers; 0 is between them. Logically, our calendar should start with the year 0 (what we usually call 1 BC). It should start on 0 January 1 at the start of midnight.
If one starts our calendar with the year 0, then the first century is 0-99; the second one is 100-199, and so forth. The twentieth century is then 1900-1999. The present year 1999 is the two-thousandth year of the Common Era. It is true that the new millennium starts with the 2001st year, but that year is not 2001; it is 2000. So the new millennium begins with the year 2000.
It helps to look at your own life. When you were born, you were not 1 year old, were you? You had to wait a year until you were 1. You were in the first year of your life, but that did not mean you were 1 year old. I started the second half-century of my life when I turned 50, not when I turned 51. At that time, the earth had revolved around the sun exactly 50 times.
Likewise, the calendar completes two thousand years of time on the midnight between 1999 December 31 and 2000 January 1.
There is a way of characterizing people by programming languages depending on when they consider the millennium to begin and whether they assume a year 0. They are:
This is in analogy with the way these languages treat arrays (and the sequence of years can be considered to be an array), as in the following:
DIMENSION YEAR(2000) C YEAR(1) and YEAR(2000) are valid. YEAR(0) is not valid. C YEAR(2000) is the first two millennia. The third millennium starts with YEAR(2001).
Dim Year(2000) Rem Year(0) and Year(2000) both make sense. This Dim statement defines 2001 values. Rem The next year after this array is 2001, which is when the third millennium begins.
int year[2000]; // year is defined from year[0] to year[1999]. If you use year[2000] you may bomb your computer. // The next millennium starts with year[2000] which requires additional dimensioning // to make valid.
The C, C++, C#, and Java version seems naturally the best (see "Ordinal Number argument below"). That corresponds to there being a year 0 and to 2000 being the start of the Next Millennium.
In set theory, in transfinite ordinal theory, each (ordinal) number is defined to be the set of all the previous ones. Thus 5 = {0,1,2,3,4}. That defines the finite numbers. The set of ALL the finite numbers is w, the first transfinite or infinite number. The set {0,1,2,3...,w} is then w + 1, and then comes w + 2, ..., w2, ... Now certainly the first infinite number is NOT w + 1. It is w, even though all its elements are finite. So in the same way, 2000 is the first year of the new millennium. 2000 is the set MM of all numbers with three digits or less or with four digits where the first one is a 1. Just as w is not a finite number, so 2000 is not in MM, which represents the first two millennia. So 2000 is in the Third Millennium.
Jim Blowers
Revised on 2000 January 7, just 7 days after the New Millennium began.
Revised again on 2003 December 27.