Excel serial date converter

Convert Excel and Google Sheets serial numbers to real dates and epoch timestamps. Choose the 1900 or 1904 system and the zone the spreadsheet meant.

Nowreading device clock…
Unix number in any unit, ISO 8601, RFC 2822, Excel serial, FILETIME, UUID, ULID or Snowflake.
IANA zone; type to search, e.g. Kolkata, Paris.
Precision and rounding
  • Check: Excel serials store no time zone, so this was read as wall-clock time in UTC.
UTCUTC+00:00
2023-03-15 Wed
18:00:00.000
UTCUTC+00:00
2023-03-15 Wed
18:00:00.000

Read as Excel serial (1900 system) · wall time in UTC

Unix epoch
Unix seconds1678903200Exact; fraction shown when present
Unix seconds (integer, floor)1678903200
Unix milliseconds1678903200000
Unix microseconds1678903200000000
Unix nanoseconds1678903200000000000
Unix seconds (hex)0x641207A0
Standard date formats
ISO 8601 (UTC)2023-03-15T18:00:00.000Z
RFC 3339 (UTC)2023-03-15T18:00:00.000+00:00
RFC 9557 (offset + zone)2023-03-15T18:00:00.000+00:00[UTC]
RFC 2822 (UTC)Wed, 15 Mar 2023 18:00:00 +0000
HTTP-date (IMF-fixdate)Wed, 15 Mar 2023 18:00:00 GMTAlways GMT; whole seconds
SQL TIMESTAMP (UTC)2023-03-15 18:00:00.000Microsecond precision max (PostgreSQL/MySQL)
SQL TIMESTAMP (UTC wall time)2023-03-15 18:00:00.000No zone stored: ambiguous without context
PostgreSQL timestamptz literal2023-03-15 18:00:00.000+00:00
ISO week date (UTC)2023-W11-3
Ordinal date (UTC)2023-074
Readable (UTC)Wednesday, 15 March 2023, 18:00:00 UTCCanonical English; not locale-dependent
Platform and system epochs
JavaScript new Date(ms)new Date(1678903200000)
Java InstantInstant.ofEpochSecond(1678903200L, 0L)Nanosecond precision
Python datetime (UTC)datetime(2023, 3, 15, 18, 0, 0, 0, tzinfo=timezone.utc)Microsecond precision
.NET DateTime ticks638145000000000000100-ns ticks since 0001-01-01 (DateTime.Ticks with Kind=Utc).
Windows FILETIME / LDAP133233768000000000100-ns intervals since 1601 UTC. Active Directory lastLogon, pwdLastSet, accountExpires.
Chrome / WebKit time13323376800000000Microseconds since 1601 UTC (Chrome history, cookies).
Apple Cocoa / Core Data700596000NSDate timeIntervalSinceReferenceDate, Core Data, iOS/macOS plists.
Mac HFS+ seconds3761748000Classic Mac OS / HFS+ volume dates (seconds since 1904).
NTP seconds (era 0)3887892000NTP era 0 wraps on 2036-02-07; era numbers are not encoded in the 32-bit field.
Excel serial 1900 (UTC wall time)45000.75Days since 1900-01-00 with the Lotus 1-2-3 leap-year bug (serial 60 = fictitious 1900-02-29). No time zone.
Excel serial 1904 (UTC wall time)43538.75Older Mac Excel workbooks. Days since 1904-01-01. No time zone.
Julian Date2460019.25Days since noon UT, 24 Nov 4714 BC. Computed from UTC, so it ignores the UT1/TT distinction.
Modified Julian Date60018.75JD - 2400000.5. Computed from UTC.
GPS seconds1362938418Seconds since the GPS epoch, counting leap seconds (GPS = TAI - 19 s). Uses the bundled leap-second table.
TAI (TAI-UTC = 37 s)2023-03-15T18:00:37.000 TAIFrom the bundled leap-second table
ID range bounds
Smallest UUIDv7 at this ms0186e66d-c900-7000-8000-000000000000Use as a range-query lower bound
Smallest ULID at this ms01GVK6VJ800000000000000000
Smallest Twitter / X Snowflake1636064717829046272
Smallest Discord Snowflake1085623448371200000
Smallest MongoDB ObjectId641207a00000000000000000
Settings and local data

Storage: checking…

How Excel stores dates

Excel stores a date-time as a number of days. The integer part is the date and the fraction is the time of day, so 45000.75 is 18:00 on 15 March 2023. In the default 1900 system, serial 1 is 1 January 1900. Older Mac workbooks use the 1904 system, where serial 0 is 1 January 1904, a difference of 1,462 days. If dates from a colleague's file are four years off, the file uses the other system.

Excel inherited a bug from Lotus 1-2-3 that treats 1900 as a leap year. Serial 60 is displayed as 29 February 1900, a day that never existed, and serials 1 to 59 are off by one compared with serials from 61 on. This converter applies the correct base on each side of the bug and gives a warning when you enter serial 60.

Examples to try

Serial numbers have no time zone

A spreadsheet cell holds wall-clock time without a zone. To turn it into an epoch, the converter needs to know which zone the spreadsheet meant, so the zone selector is part of the input. The reverse also applies: the Excel rows in the outputs list are labelled with the zone they are rendered in. To convert in Excel itself, use =(A1-25569)*86400 for Unix seconds, which assumes the cell holds UTC.

Questions

What is serial 25569 in Excel?
25569 is 1970-01-01, the Unix epoch, in the 1900 system. Unix seconds = (serial - 25569) × 86400 when the serial is UTC.
Does Google Sheets have the 1900 bug?
No. Google Sheets counts from 1899-12-30 for all dates. It matches Excel from 1 March 1900 onward and differs only for January and February 1900.
Why can't I convert a negative serial?
Neither Excel date system supports dates before its start, so negative serials are reported as unsupported instead of being extrapolated.