Epoch (reference date)
In the fields of chronology and periodization, an epoch is an instant in time chosen as the origin of a particular era. The "epoch" then serves as a reference point from which time is measured. Time measurement units are counted from the epoch so that the date and time of events can be specified unambiguously.
Events taking place before the epoch can be dated by counting negatively from the epoch, though in pragmatic periodization practice, epochs are defined for the past, and another epoch is used to start the next era, therefore serving as the ending of the older preceding era. The whole purpose and criteria of such definitions are to clarify and co-ordinate scholarship about a period, at times, across disciplines.
Epochs are generally chosen to be convenient or significant by a consensus of the time scale's initial users, or by authoritarian fiat. The epoch moment or date is usually defined by a specific clear event, condition, or criterion—the epoch event or epoch criterion—from which the period or era or age is usually characterized or described.
The official Japanese system numbers years from the accession of the current emperor, regarding the calendar year during which the accession occurred as the first year. A similar system existed in China before 1912, being based on the accession year of the emperor (1911 was thus the third year of the Xuantong period). With the establishment of the Republic of China in 1912, the republican era was introduced. It is still very common in Taiwan to date events via the republican era. The People's Republic of China adopted the common era calendar in 1949 (the 38th year of the Chinese Republic).
- Olympiads, the ancient Greek era of four-year periods beginning in 776 BC.
- Ab urbe condita (753 BC), used in the Roman imperial period.
- The Anno Domini or "Common Era" era, still in use with the Gregorian and Julian calendars today, marks the Incarnation of Jesus as calculated in the 6th century by Dionysius Exiguus.
- Anno Mundi (years since the creation of the world) as used in the Byzantine calendar (5509 BC).
- Anno Mundi (years since the creation of the world) as used in the Hebrew calendar (3761 BC).
- The Islamic calendar counts "lunar years" by Anno Hegiræ (in the year of the hijra) or AH era (AD 622). The year count shifts relative to the solar year as the calendar is purely lunar. The official Iranian calendar (used in Afghanistan as well as Iran) also dates from the hijra, but as it is a solar calendar its year numbering does not coincide with the religious calendar.
- The term Hindu calendar may refer to a number of traditional Indian calendars. A notable example of a Hindu epoch is the Vikram Samvat (58 BC), also used in modern times as "national calendar" of Nepal and Bangladesh.
- Buddhist calendars tend to use the epoch of 544 BC (date of Buddha's parinirvana).
- The Baha'i calendar is dated from the vernal equinox of the year the Báb proclaimed his religion (AD 1844). Years are grouped in Váḥids of 19 years, and Kull-i-Shay’s of 361 (19 x 19) years.
- In Thailand in 1888 King Chulalongkorn decreed a National Thai Era dating from the founding of Bangkok on April 6, 1782. In 1912, New Year's Day was shifted to April 1. In 1941, Prime Minister Phibunsongkhram decided to count the years since 543 BC. This is the Thai solar calendar using the Thai Buddhist Era. Except for this era, it is the Gregorian calendar.
- In the French Republican Calendar, a calendar used by the French government for about twelve years from late 1793, the epoch was the beginning of the "Republican Era", September 22, 1792 (the day the French First Republic was proclaimed, one day after the Convention abolished the monarchy).
- The Indian national calendar, introduced in 1957, follows the Saka era (AD 78).
- Minguo calendar used by officials of Taiwan and its predecessor since January 1, 1912, the first year after Xinhai Revolution which overthrew Qing Empire and the subsequent establishment of the republic.
- North Korea uses a system that starts in 1912 (= Juche 1), the year of the birth of their founder Kim Il-Sung.
- In the scientific Before Present system of numbering years for purposes of radiocarbon dating, the reference date is January 1, 1950 (though the use of January 1 is quite irrelevant, as radiocarbon dating has limited precision).
- Different branches of Freemasonry have selected different years to date their documents according to a Masonic era, such as the Anno Lucis (A.L.).
In astronomy, an epoch is a specific moment in time for which celestial coordinates or orbital elements are specified, and from which other orbital parametrics are thereafter calculated in order to predict future position. The applied tools of the mathematics disciplines of Celestial mechanics or its subfield Orbital mechanics (both predict orbital paths and positions) about a center of gravity are used to generate an ephemeris (plural: ephemerides; from the Greek word ephemeros = daily) which is a table of values that gives the positions of astronomical objects in the sky at a given time or times, or a formula to calculate such given the proper time offset from the epoch. Such calculations generally result in an elliptical path on a plane defined by some point on the orbit, and the two foci of the ellipse. Viewing from another orbiting body, following its own trace and orbit, creates shifts in three dimensions in the spherical trigonometry used to calculate relative positions. These dynamics in three dimensions are also elliptical, which means the ephemeris need only specify one set of equations to be a useful predictive tool to predict future location of the object of interest.
Over time, inexactitudes and other errors accumulate, creating more and greater errors of prediction, so ephemeris factors need to be recalculated from time to time, and that requires a new epoch to be defined. Different astronomers or groups of astronomers used to define epochs to suit themselves, but in these days of speedy communications, the epochs are generally defined in an international agreement, so astronomers worldwide can collaborate more effectively. It was inefficient and error prone for data observed by one group to need translation (mathematic transformation) so other groups could compare information.
The current standard epoch is called "J2000.0" This is defined by international agreement to be equivalent to:
- The Gregorian date January 1, 2000 at approximately 12:00 GMT (Greenwich Mean Time).
- The Julian date 2451545.0 TT (Terrestrial Time).
- January 1, 2000, 11:59:27.816 TAI (International Atomic Time).
- January 1, 2000, 11:58:55.816 UTC (Coordinated Universal Time).
The time kept internally by a computer system is usually expressed as the number of time units that have elapsed since a specified epoch, which is nearly always specified as midnight Universal Time on some particular date.
Software timekeeping systems vary widely in the granularity of their time units; some systems may use time units as large as a day, while others may use nanoseconds. For example, for an epoch date of midnight UTC (00:00) on January 1, 1900, and a time unit of a second, the time of the midnight (24:00) between January 1 and 2, 1900 is represented by the number 86400, the number of seconds in one day. When times prior to the epoch need to be represented, it is common to use the same system, but with negative numbers.
These representations of time are mainly for internal use. If an end user interaction with dates and times is required, the software will nearly always convert this internal number into a date and time representation that is comprehensible to humans.
Notable epoch dates in computing
The following table lists epoch dates used by popular software and other computer-related systems. The time in these systems is stored as the quantity of a particular time unit (days, seconds, nanoseconds, etc.) that has elapsed since a stated time (usually midnight UTC at the beginning of the given date).
|Epoch date||Notable uses||Rationale for selection|
|January 0, 1 BC||MATLAB|
|January 1, AD 1||Microsoft .NET, Go, REXX, Rata Die||Common Era, ISO 2014, RFC 3339|
|October 15, 1582||UUID version 1||The date of the Gregorian reform to the Christian calendar.|
|January 1, 1601||NTFS, COBOL, Win32/Win64||1601 was the first year of the 400-year Gregorian calendar cycle at the time Windows NT was made.|
|December 31, 1840||MUMPS programming language||1841 was a non-leap year several years before the birth year of the oldest living US citizen when the language was designed.|
|November 17, 1858||VMS, United States Naval Observatory, DVB SI 16-bit day stamps, other astronomy-related computations||November 17, 1858, 00:00:00 UT is the zero of the Modified Julian Day (MJD) equivalent to Julian day 2400000.5|
|December 30, 1899||Microsoft COM DATE, Object Pascal, LibreOffice Calc, Google Sheets||Technical internal value used by Microsoft Excel; for compatibility with Lotus 1-2-3.|
|December 31, 1899||Microsoft C/C++ 7.0||A change in Microsoft’s last version of non-Visual C/C++ that was subsequently reverted.|
|January 0, 1900||Microsoft Excel, Lotus 1-2-3||While logically January 0, 1900 is equivalent to December 31, 1899, these systems do not allow users to specify the latter date. Since 1900 is incorrectly treated as a leap year in these systems, January 0, 1900 actually corresponds to the historical date of December 30, 1899.|
|January 1, 1900||Network Time Protocol, IBM CICS, Mathematica, RISC OS, VME, Common Lisp, Michigan Terminal System|
|January 1, 1904||LabVIEW, Apple Inc.'s classic Mac OS, JMP Scripting Language, Palm OS, MP4, Microsoft Excel (optionally), IGOR Pro||1904 is the first leap year of the 20th century.|
|December 31, 1967||Pick OS and variants (jBASE, Universe, Unidata, Revelation, Reality)||Chosen so that (date mod 7) would produce 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, and 6=Saturday.|
|January 1, 1960||SAS System|
|January 1, 1978||AmigaOS. The Commodore Amiga hardware systems were introduced between 1985 and 1994. Latest OS version 4.1 (December 2016). AROS, MorphOS.|
|January 1, 1980||IBM BIOS INT 1Ah, DOS, OS/2, FAT12, FAT16, FAT32, exFAT filesystems||The IBM PC with its BIOS as well as 86-DOS, MS-DOS and PC DOS with their FAT12 file system were developed and introduced between 1980 and 1981|
|January 6, 1980||Qualcomm BREW, GPS, ATSC 32-bit time stamps||GPS counts weeks (a week is defined to start on Sunday) and January 6 is the first Sunday of 1980.|
|January 1, 2000||AppleSingle, AppleDouble, PostgreSQL, ZigBee UTCTime|
|January 1, 2001||Apple's Cocoa framework||2001 is the year of the release of Mac OS X 10.0 (but NSDate for Apple's EOF 1.0 was developed in 1994).|
Problems with epoch-based computer time representation
Computers do not generally store arbitrarily large numbers. Instead, each number stored by a computer is allotted a fixed amount of space. Therefore, when the number of time units that have elapsed since a system's epoch exceeds the largest number that can fit in the space allotted to the time representation, the time representation overflows, and problems can occur. While a system's behavior after overflow occurs is not necessarily predictable, in most systems the number representing the time will reset to zero, and the computer system will think that the current time is the epoch time again.
Most famously, older systems which counted time as the number of years elapsed since the epoch of January 1, 1900 and which only allotted enough space to store the numbers 0 through 99, experienced the Year 2000 problem. These systems (if not corrected beforehand) would interpret the date January 1, 2000 as January 1, 1900, leading to unpredictable errors at the beginning of the year 2000.
Even systems which allocate more storage to the time representation are not immune from this kind of error. Many Unix-like operating systems which keep time as seconds elapsed from the epoch date of January 1, 1970, and allot timekeeping enough storage to store numbers as large as 2 147 483 647 will experience an overflow problem on January 19, 2038 if not fixed beforehand. This is known as the Year 2038 problem. A correction involving doubling the storage allocated to timekeeping on these systems will allow them to represent dates more than 290 billion years into the future.
Other more subtle timekeeping problems exist in computing, such as accounting for leap seconds, which are not observed with any predictability or regularity. Additionally, applications which need to represent historical dates and times (for example, representing a date prior to the switch from the Julian calendar to the Gregorian calendar) must use specialized timekeeping libraries.
Finally, some software must maintain compatibility with older software that does not keep time in strict accordance with traditional timekeeping systems. For example, Microsoft Excel observes the fictional date of February 29, 1900 in order to maintain compatibility with older versions of Lotus 1-2-3. Lotus 1-2-3 observed the date due to an error; by the time the error was discovered, it was too late to fix it—"a change now would disrupt formulas which were written to accommodate this anomaly".
Epoch in satellite-based time systems
There are at least six satellite navigation systems, all of which function by transmitting time signals. Of the only two satellite systems with global coverage, GPS calculates its time signal from an epoch, whereas GLONASS calculates time as an offset from UTC, with the UTC input adjusted for leap seconds. Of the only two other systems aiming for global coverage, Galileo calculates from an epoch and Beidou calculates from UTC without adjustment for leap seconds. GPS also transmits the offset between UTC time and GPS time, and must update this offset every time there is a leap second, requiring GPS receiving devices to handle the update correctly. In contrast, leap seconds are transparent to GLONASS users. The complexities of calculating UTC from an epoch are explained by the European Space Agency in Galileo documentation under "Equations to correct system timescale to reference timescale"
- Annum, Anno Lucis, Anno Mundi
- Common Era (CE) (Anno Domini (AD))
- Dating creation
- Epoch (astronomy), Epoch (geology)
- Holocene calendar, Lunisolar calendar
- Timekeeping on Mars
- Metonic cycle, Saros (astronomy)
- Blackburn, B. & Holford-Strevens, L. (2003). The Oxford Companion to the Year: An exploration of calendar customs and time-reckoning. Oxford University Press. Glossary entry for "Incarnation era", p. 881.
- "Counting the Jewish Years – My Jewish Learning". myjewishlearning.com.
- "Overview of Calendars". www.rosettacalendar.com.
- Dershowitz, Nachum; Reingold, Edward M. (2008). Calendrical Calculations (3rd ed.). Cambridge University Press. p. 289. ISBN 978-0-521-70238-6.
- E. G. Richards, "Calendars," in eds. S. E. Urban and P. K. Seidelman Explanatory Supplement to the Astronomical Almanac (Mill Valley, CA: University Science Books, 2013) 616–7
- Higham, Thomas. "Radiocarbon dating – Age calculation". Retrieved December 31, 2009.
- Stuiver, Minze; Polach HA (1977). "Discussion; reporting of C-14 data" (PDF). Radiocarbon. University of Arizona. 19 (3): 355–363. Retrieved December 31, 2009.[permanent dead link]
- Seidelmann, P. K., Ed. (1992). Explanatory Supplement to the Astronomical Almanac. Sausalito, CA: University Science Books. p. 8.
- Seidelmann, P. K., Ed. (1992). Explanatory Supplement to the Astronomical Almanac. Sausalito, CA: University Science Books. Glossary, s.v. Terrestrial Dynamical Time.
- This article uses a 24-hour clock, so 11:59:27.816 is equivalent to 11:59:27.816 AM.
- Proleptic Gregorian calendar
- "datenum", MathWorks, accessed July 7, 2015.
- "GregorianCalendar Class". MSDN. Remarks. Retrieved April 26, 2015.
- "DateTimeOffset Structure" (.NET Framework 4.5), MSDN, 2015.
- "Package time". golang.org. Retrieved April 26, 2015.
- "DATE" in z/OS TSO/E REXX Reference (publication no. SA32-0972-00), IBM, February 2015.
- Dershowitz, Nachum; Reingold, Edward (2008). Calendrical Calculations (3rd ed.). Cambridge University Press. chapter 1.2. ISBN 978-0-521-70238-6. Archived from the original on July 12, 2008. Retrieved April 26, 2015.
- M. F. Cowlishaw (1990). The Rexx Language: A Practical Approach to Programming (2nd ed.). Prentice Hall. p. 93, p. 177. ISBN 0-13-780651-5.
- "Go 1 Release Notes". golang.org. March 28, 2012. Major changes to the library. Retrieved April 26, 2015.
- RFC 4122
- Why is the Win32 epoch January 1, 1601? The Old New Thing, MSDN Blogs, March 6, 2009
- "What happened in 1841?". M Technology and MUMPS Language FAQ, Part 1/2. Archived from the original on August 28, 2015. Retrieved August 14, 2015.
- Gernot M. R. Winkler. "Modified Julian Date". (current MJD). U.S. Naval Observatory. Retrieved January 29, 2015. External link in
- "Wayback Machine". archive.org. June 6, 2007. Archived from the original on June 6, 2007.
- "Introduction to the Google Sheets API". Google Developers.
- Spolsky, Joel. "Why are the Microsoft Office file formats so complicated? (And some workarounds)". Retrieved March 8, 2009.
- "Time Management". msdn.microsoft.com.
- "What is story behind December 30, 1899 as base date?". social.msdn.microsoft.com.
- "Dates And Times In Excel". www.cpearson.com.
- "MacTech – The journal of Apple technology". www.mactech.com.
- Mark Pick, International Spectrum Conference April 2010
- "Introduction to Dates and Times in SAS" (PDF).
- "time_t – C++ Reference". Retrieved April 6, 2015.
- File: the year 2000 problem and the Amiga, Olaf Barthel, September 1998 AmigaOS measures time in seconds and stores it in a signed 32 bit integer. After January 19, 2046, 03:14:07 the date will be negative. Latest OS version 4.1 (2016) has no fix for this.
- "Time and frequency distribution using satellites" (PDF). nist.gov.
- "Time Systems and Dates – GPS Time". www.oc.nps.edu.
- "AppleSingle/AppleDouble Formats for Foreign Files Developer's Note" (PDF). Archived from the original (PDF) on July 17, 2011. Retrieved October 23, 2007.
- PostgreSQL 9.1 – 8.5. Date/Time Types "Note: When timestamp values are stored as eight-byte integers (currently the default), microsecond precision is available over the full range of values. […] timestamp values are stored as seconds before or after midnight 2000-01-01. " Be aware that the Epoch function return the unix Epoch SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '1970-01-01 00:00:00-00'); returns 0
- Section 220.127.116.11 UTCTime of: "ZigBee Cluster Library Specification" ZigBee Document 075123r02ZB, 075366r01ZB_AFG-ZigBee_Cluster_Library_Public_download_version.pdf
- Kay Wilkins, Customer Relations Representative , Lotus Development Corp. (1992) quoted in Dershowitz, N. & Reingold, E. M. (2008). Calendrical calculations (3rd ed.). Cambridge University Press. p. xxi, xxvi. ISBN 978-0-521-70238-6.
- European Space Agency: http://www.navipedia.net/index.php/Time_References_in_GNSS
- Section 5(d) "Equations to correct system timescale to reference timescale" of RDI: European GNSS (Galileo) Open Service Signal In Space Interface Control Document (OS SIS ICD), Issue 1.1, September 2010 http://www.unoosa.org/pdf/icg/2012/Timescale-GALILEO.pdf