Epoch Time Converter (Unix, FILETIME, Excel)
Time
Different operating systems and apps measure time as 'seconds (or some unit) since some chosen zero point' — but they each chose differently. Unix picked 1970-01-01 UTC. NTP picked 1900-01-01 UTC. Windows NT picked 1601-01-01 UTC and counts in 100-nanosecond intervals (FILETIME). .NET DateTime ticks count 100-nanosecond intervals from 0001-01-01. Classic Mac OS HFS+ used 1904-01-01 in seconds. Apple's Cocoa CFAbsoluteTime uses 2001-01-01 in seconds. Microsoft Excel for Windows counts days from 1899-12-30 (because Lotus 1-2-3 treated 1900 as a leap year by mistake and Excel inherited the bug); Mac Excel counts from 1904-01-01. Then there are the human-readable formats: ISO 8601 ('2026-06-05T00:00:00.000Z') and RFC 2822 ('Fri, 05 Jun 2026 00:00:00 GMT'). When a SQL Server BIGINT, a Windows event log entry, and a CSV from Numbers all describe the same moment, you need to translate between them. This tool does that in one shot — pick any format on the left, paste the value, and every other format renders instantly with the correct epoch offset and unit. BigInt arithmetic is used for FILETIME and .NET ticks so precision survives even for far-future dates that would overflow JavaScript's 53-bit float.
Conversion details
Internal canonical value: JavaScript milliseconds since 1970-01-01 UTC (53-bit float, valid for roughly ±285 614 years from 1970). FILETIME and .NET ticks use BigInt arithmetic to preserve exact integer precision. Excel 1900 uses offset 25569 (1899-12-30 to 1970-01-01) — this is correct for all dates from 1900-03-01 onward and silently drops Lotus's phantom 1900-02-29. ISO 8601 and RFC 2822 outputs are always in UTC/GMT.
How to use
- Pick a source format from the dropdown (default is ISO 8601 set to now).
- Paste or type the value in that format — all 11 representations update instantly.
- Switch the format dropdown to convert: the displayed value re-fills the box in that new format.
- Use a preset to seed common reference moments: now, the Unix epoch (1970), Y2K, the Y2038 problem, or the NTP 32-bit rollover (2036-02-07).
- Click any row's copy button to copy that representation to clipboard.
Frequently asked questions
- Why does Excel's 1900 serial date count from 1899-12-30 instead of 1900-01-01?
- Lotus 1-2-3 incorrectly treated 1900 as a leap year (it isn't — 1900 ÷ 100 = 19 with remainder 0 but 1900 ÷ 400 ≠ integer, so the Gregorian rule excludes it). When Microsoft built Excel they copied Lotus's bug for spreadsheet compatibility, which means Excel has a phantom February 29, 1900. To make the offset work cleanly for all dates after 1900-03-01 we use 25569 (1899-12-30 to 1970-01-01 in days), which gives correct results for every real date. Dates before 1900-03-01 in Excel are off by one day, but those are extremely rare in practice.
- Why use BigInt for FILETIME and .NET Ticks?
- FILETIME counts 100-nanosecond intervals from 1601-01-01 UTC. For a moment around year 2100 that's ~1.6 × 10¹⁷ — well past Number.MAX_SAFE_INTEGER (~9 × 10¹⁵). The bottom digits silently drift if you store it as a regular JavaScript number. Same for .NET ticks (~6.6 × 10¹⁷ around 2100). BigInt is JavaScript's arbitrary-precision integer type and keeps every digit exact, so round-tripping a FILETIME through this tool gives back exactly the same digits.
- What's the Y2038 problem, and is your Unix output affected?
- Many legacy C programs store Unix time as a signed 32-bit integer, which overflows at 2³¹ − 1 seconds past 1970 = 03:14:07 UTC on 2038-01-19. This tool stores time as JavaScript milliseconds (a 64-bit float, valid for ±285 614 years around 1970), so Y2038 isn't a problem here. We expose Y2038 as a preset so you can see how the formats represent that moment. NTP has its own rollover in 2036 because the 32-bit seconds counter restarts; that's also a preset.
- Why both Excel 1900 and Excel 1904?
- Excel for Windows uses 1900 as its base; Excel for Mac (and Numbers, until recently) uses 1904. A spreadsheet emailed between a Windows analyst and a Mac one will look correct in each app but will silently shift by ~4 years if the underlying serial numbers get copied raw. Both formats are exposed so you can detect or convert between them.
Related tools
World Clock
See several time zones side by side with live updates and offset differences from your local time.
Time Difference Calculator
Calculate the exact difference between two date-times, broken down into days, hours, minutes, and seconds.
Timezone Converter
Convert a date and time between any two world timezones, including DST.
Unix Timestamp Converter
Convert Unix timestamps to dates and dates back to timestamps.
Stopwatch & Timer
A precise stopwatch with laps and a countdown timer with an alarm.
D-Day Calculator
Count the days between two dates, or the countdown to a target date.