Timestamp Converter
Convert Unix epoch timestamps to human-readable dates and back. Supports seconds & milliseconds, any timezone, ISO 8601.
Convert Unix epoch timestamps to human-readable dates and back. Supports seconds & milliseconds, any timezone, ISO 8601.
Timestamp Converter converts between Unix timestamps (seconds, milliseconds, or microseconds since epoch) and human-readable date/time in any timezone. Enter a Unix timestamp to see the local and UTC time, or enter a date/time to get the Unix timestamp. It shows the timestamp in multiple formats (ISO 8601, RFC 2822, locale-specific) and calculates the time elapsed since or until the given timestamp.
A Unix timestamp is the number of seconds elapsed since the Unix epoch: January 1, 1970, 00:00:00 UTC. It's the universal time representation in programming — databases store timestamps as integers, APIs return them in JSON, logs record them for sortability. Millisecond timestamps (ms since epoch) are used in JavaScript (Date.now()), browser APIs, and many modern APIs. Microsecond timestamps are used in high-precision logging and metrics.
Common timestamp issues: the Y2K38 problem — 32-bit signed integers overflow at Unix timestamp 2,147,483,647 (January 19, 2038, 03:14:07 UTC). Systems that store timestamps as 32-bit integers will fail at this point. The fix: use 64-bit integers (which won't overflow for billions of years). JavaScript's Date uses 64-bit millisecond timestamps. PostgreSQL's TIMESTAMP type uses 8-byte integers. MySQL's TIMESTAMP column type has the 2038 problem; use DATETIME instead.
Convert API timestamp
Result: 1753512000 → Sunday, July 26, 2026, 00:00:00 UTC / 09:00:00 JST
Get timestamp for tomorrow noon
Result: 2026-07-27 12:00:00 UTC → Unix: 1753610400
How long ago?
Result: Timestamp 1714000000 → April 25, 2024 → 458 days ago (as of July 26, 2026)
What is the Unix epoch and why January 1, 1970?
The Unix epoch (January 1, 1970, 00:00:00 UTC) was chosen as the reference point for Unix timestamps by the original Unix developers at Bell Labs in the early 1970s. It was a recent date (a few years back), simple to implement, and far enough from any near-future dates. There's no deep mathematical reason for that specific date — it was a practical choice. In practice, the exact reference date doesn't matter as long as all systems use the same one.
What is the difference between UTC, GMT, and local time?
UTC (Coordinated Universal Time) is the primary time standard used worldwide — it's the modern replacement for GMT. GMT (Greenwich Mean Time) is a timezone equivalent to UTC+0 but historically defined by solar time at the Greenwich meridian. They're effectively identical for most purposes. UTC never has daylight saving time adjustments. Local time is UTC offset by your timezone: UTC+9 = Japan Standard Time (JST), UTC-5 = Eastern Standard Time (EST), UTC-4 = Eastern Daylight Time (EDT).
What is ISO 8601 and why should I use it for timestamps?
ISO 8601 is an international standard for date and time representation. Format: YYYY-MM-DDTHH:MM:SS.sssZ (where T separates date and time, Z indicates UTC, or use +HH:MM offset). Examples: 2026-07-26T12:00:00Z (UTC), 2026-07-26T21:00:00+09:00 (JST). ISO 8601 is unambiguous (01/02/03 could be Jan 2, Feb 1, or 2001-02-03), sortable lexicographically, and machine-parseable. Always use ISO 8601 in APIs, logs, and data storage.
What will happen in 2038 (the Y2K38 problem)?
Many systems store Unix timestamps as 32-bit signed integers, which max out at 2,147,483,647 (January 19, 2038, 03:14:07 UTC). After this point, the counter wraps to negative (January 1, 1901). Systems affected: MySQL TIMESTAMP columns (use DATETIME instead), embedded systems with 32-bit time_t, 32-bit Linux kernels, and legacy C code using int for timestamps. Fix: migrate to 64-bit timestamps. Modern systems (64-bit Linux, PostgreSQL, JavaScript) use 64-bit timestamps and won't have this issue.
How do I format timestamps in JavaScript?
Options: Date object (built-in, limited): new Date(timestamp * 1000).toISOString(). Intl.DateTimeFormat (modern, locale-aware): new Intl.DateTimeFormat('en-US', {timeZone: 'America/New_York', dateStyle: 'full', timeStyle: 'short'}).format(new Date(ts * 1000)). date-fns library: format(new Date(ts * 1000), 'yyyy-MM-dd HH:mm:ss'). Luxon: DateTime.fromSeconds(ts).setZone('America/New_York').toFormat('yyyy-MM-dd HH:mm'). Avoid the deprecated moment.js for new projects.