Epoch time counts from an agreed starting point
An epoch is the moment a clock starts counting from. When people say "epoch time" they almost always mean the Unix epoch, 1970-01-01 00:00:00 UTC. Other systems picked different starting points and different tick sizes, which is why the same moment has several epoch values:
- Unix: seconds since 1970-01-01 UTC. Used by Linux, macOS, most APIs and many databases. JavaScript and Java count the same epoch in milliseconds.
- Windows FILETIME: 100 nanosecond ticks since 1601-01-01 UTC. It appears in NTFS timestamps and in Active Directory fields such as
lastLogonandpwdLastSet. - .NET ticks: 100 nanosecond ticks since 0001-01-01 00:00:00. This is the value of
DateTime.Ticksin C#. - Apple absolute time: seconds since 2001-01-01 00:00:00 UTC. Cocoa and Core Data dates use it, for example
timeIntervalSinceReferenceDate. - Chrome and WebKit time: microseconds since 1601-01-01 UTC. Chrome stores history and cookie times this way.
- Excel serial date: days since 1899-12-30 for the 1900 date system, with the time as a fraction of a day. Excel wrongly treats 1900 as a leap year, so serial numbers before 1900-03-01 are one day off from this count.
- Julian date: days since noon on 1 January 4713 BC in the Julian calendar, used in astronomy. 1970-01-01 00:00 UTC is JD 2440587.5.
The rows on this page work in whole milliseconds, so FILETIME and .NET tick values are exact to the millisecond but not finer.
Epoch milestones worth recognising
Round epoch numbers are easy to spot in logs and test data:
- 0: 1970-01-01 00:00:00 UTC, the epoch itself.
- 1000000000: 2001-09-09 01:46:40 UTC, sometimes called the Unix billennium.
- 1234567890: 2009-02-13 23:31:30 UTC.
- 1700000000: 2023-11-14 22:13:20 UTC.
- 2000000000: 2033-05-18 03:33:20 UTC.
- 2147483647: 2038-01-19 03:14:07 UTC, the last second a signed 32-bit integer can hold.
Paste any of them to check, or use the example buttons above the result. Values far above these, such as 13-digit numbers, are normally milliseconds.
Converting epoch time outside this page
In a spreadsheet, put the epoch seconds in cell A1 and use =A1/86400+DATE(1970,1,1), then format the cell as a date and time. For milliseconds divide by 86400000 instead. The result is in UTC.
In SQL, PostgreSQL has to_timestamp(1700000000), MySQL has FROM_UNIXTIME(1700000000) and SQLite has datetime(1700000000, 'unixepoch'). In PowerShell, [DateTimeOffset]::FromUnixTimeSeconds(1700000000) returns the date. On Linux, date -u -d @1700000000 does the same.