The last representable second
A signed 32-bit integer can represent a maximum of 2,147,483,647. Interpreted as Unix seconds, this value corresponds to January 19, 2038 at 03:14:07 UTC.
The first instant outside the range is January 19, 2038 at 03:14:08 UTC, or 2,147,483,648 seconds.
What happens on overflow?
If a system wraps to the minimum signed integer, the value becomes −2,147,483,648, corresponding to December 13, 1901 at 20:45:52 UTC. This behavior is not universal: an application may instead report an error, saturate the value or exhibit undefined behavior, depending on the language and operation.
new Date(2147483647 * 1000).toISOString();
// 2038-01-19T03:14:07.000Z
new Date(2147483648 * 1000).toISOString();
// 2038-01-19T03:14:08.000ZJavaScript Date does not have this limit: it does not store seconds as a signed 32-bit integer.
Which systems should you check?
- Applications and libraries that still use 32-bit dates.
- File formats, protocols and database fields that impose this size.
- Embedded systems and communication with legacy software.
A 64-bit processor does not fix a protocol field that remains 32-bit. Conversely, some 32-bit platforms support a 64-bit time_t.
How to prepare a migration
Inventory date representations, use types appropriate to the platform, and test writing, reading and exchanging values around the boundary. Include dates before 1970 and after 2038 to detect implicit conversions. Compatibility mechanisms vary by system and library.
References
GNU libc — 64-bit time support · JavaScript date range
English version published September 26, 2026.