Standards Never Die

While graphing the historic flood peaks of the Red River in Fargo, North Dakota (I sure hope their levees hold – Update: They held!), I noticed that Google Docs’ spreadsheet date functions use December 30th, 1899 00:00 midnight as their epoch, or zero point, for date calculations. That’s strange!?  While tantalizingly close to January 1st, 1900 00:00, it misses by two days.  Investigation turns up a series of choices that were made to adhere to old standards instead of pure developer convenience.

The story starts with the Lotus 123 developers’ original choice to represent midnight December 31, 1899 as zero which  made January 1, 1900 very conveniently equal to one.  Very reasonable.  Unfortunately, Lotus 123 also mistakenly assumed that 1900 was a leap year; it’s not.  That means Lotus’ math was off by one for dates from March 1, 1900 onward.  Oops.  Microsoft carried on the error.  Google developer’s appear to have made yet another patch; moving the epoch back by one day aligns the dates from March 1, 1900 and only requires special cases between December 30, 1899 through February 28, 1900.