Live Unix time, numeric timestamps in seconds through nanoseconds, ISO and RFC date strings to epoch. Auto unit detection, duration calculator, code examples.
| Event | Epoch (seconds) | Date (UTC) |
|---|---|---|
| Unix epoch (time 0) | 0 | Thu, 01 Jan 1970 00:00:00 GMT |
| Y2K | 946,684,800 | Sat, 01 Jan 2000 00:00:00 GMT |
| Year 2038 problem | 2,147,483,647 | Tue, 19 Jan 2038 03:14:07 GMT |
| 9/11 | 1,000,195,200 | Tue, 11 Sep 2001 08:00:00 GMT |
| iPhone announced | 1,167,624,000 | Mon, 01 Jan 2007 04:00:00 GMT |
| 1 billion Unix seconds | 1,000,000,000 | Sun, 09 Sep 2001 01:46:40 GMT |
| 2 billion Unix seconds | 2,000,000,000 | Wed, 18 May 2033 03:33:20 GMT |
| Start of 2000 | 946,684,800 | Sat, 01 Jan 2000 00:00:00 GMT |
| Start of 2024 | 1,704,067,200 | Mon, 01 Jan 2024 00:00:00 GMT |
| Start of 2025 | 1,735,689,600 | Wed, 01 Jan 2025 00:00:00 GMT |
Unix time (also called epoch time or POSIX time) is a way to represent a point in time as a single integer: the number of seconds elapsed since 00:00:00 UTC on 1 January 1970. The POSIX standard defines this as time_t, and it is the universal timestamp format across operating systems, databases, and web APIs. Every major programming language and database engine has a built-in function to read or generate it.
The 1970 origin was chosen pragmatically during Unix development at Bell Labs — recent enough to be useful without wasting integer bits on history. Today a Unix timestamp is typically a 10-digit integer (seconds) or 13-digit integer (milliseconds). The format appears in server log files, JWT tokens (iat and exp claims), REST API responses, database columns, Git commits, and virtually every scheduling or caching system.
One important nuance: POSIX time does not count leap seconds. Every day is exactly 86,400 seconds, and the clock "smears" across inserted leap seconds. This means Unix time and TAI (International Atomic Time) diverge slightly, but for application-level timestamps — scheduling, TTLs, log correlation — the difference is irrelevant.
Different languages and systems expose timestamps at different precisions. The digit count of the integer tells you which unit it likely uses:
| Unit | Digits | Example value | Common source |
|---|---|---|---|
| Seconds | 10 | 1700000000 | POSIX time(), PHP time(), Go time.Now().Unix() |
| Milliseconds | 13 | 1700000000000 | JavaScript Date.now(), Java currentTimeMillis() |
| Microseconds | 16 | 1700000000000000 | Python time.time() (float), PostgreSQL clock_timestamp() |
| Nanoseconds | 19 | 1700000000000000000 | Go time.Now().UnixNano(), C clock_gettime() |
This converter auto-detects the unit from digit count. Override with the unit tabs when your timestamp is ambiguous — for example, a small millisecond value that looks like a second timestamp.
3 days ago. Day of year and week number are also shown.To convert in the other direction, enter a date string or use the Human Date → Epochpanel. It accepts ISO 8601, RFC 2822, and common date formats parsed by the browser's Date.parse().
created_at, expires_at, or updated_at. Paste the integer to confirm a record is fresh or an expiry has not passed.iat (issued at) and exp (expiry) claims as Unix seconds. Convert them to verify a token is still valid.UNIX_TIMESTAMP() and PostgreSQL EXTRACT(EPOCH FROM ...) return integers. Verify the human date before inserting or filtering.| Duration | Seconds | Notes |
|---|---|---|
| 1 minute | 60 | 60 s |
| 1 hour | 3,600 | 60 × 60 |
| 1 day | 86,400 | 60 × 60 × 24 |
| 1 week | 604,800 | 86,400 × 7 |
| 30 days | 2,592,000 | common month approximation |
| 1 month (avg) | 2,629,743 | 365.25 ÷ 12 × 86,400 |
| 1 year (Julian) | 31,557,600 | 365.25 × 86,400 |
| 1 year (common) | 31,536,000 | 365 × 86,400 |
| 10 years | 315,576,000 | Julian decade |
All conversions run entirely in your browser using the JavaScript Date API. No timestamps or dates you enter are sent to any server. The live clock reads Date.now(), which reflects your system clock; for millisecond-accurate UTC you should synchronise your OS clock with an NTP server.
The Unix epoch is the fixed point in time defined as 00:00:00 UTC on 1 January 1970. A Unix timestamp counts elapsed seconds — or finer sub-second units — from that instant. The POSIX standard formalises this as time_t; the same anchor is used by virtually every operating system, database, and web API.
APIs disagree on precision. POSIX time() returns 10-digit second timestamps; JavaScript Date.now() always returns 13-digit milliseconds. Counting digits is the standard heuristic: up to 10 digits are treated as seconds, up to 13 as milliseconds, up to 16 as microseconds, and 17 or more as nanoseconds. Use the unit tabs to override when your value is ambiguous.
UTC (Coordinated Universal Time) is timezone-independent — the same timestamp produces the same UTC string anywhere in the world. Local time applies your browser's timezone offset. Use UTC when logging events or comparing timestamps across distributed systems; show local time when displaying dates to end users.
JavaScript Date stores only whole milliseconds internally. Microsecond and nanosecond values are truncated to the nearest millisecond before display. The converter labels which unit it used so you know how the input was interpreted.
Signed 32-bit integers reach their maximum value of 2,147,483,647 at 03:14:07 UTC on 19 January 2038. Systems still using int32 to store Unix timestamps will overflow on that date. The fix is migration to 64-bit integers. Most modern Linux kernels and databases already use 64-bit time on 64-bit hardware.
No. POSIX time deliberately ignores leap seconds: every day is exactly 86,400 seconds, and the clock "smears" around a leap second event. Unix time is therefore not identical to TAI (International Atomic Time). For most applications — logging, scheduling, TTL calculations — this distinction is irrelevant.
A negative timestamp represents a moment before 1 January 1970. For example, −86,400 equals 31 December 1969 00:00:00 UTC. Most modern systems and this converter support negative timestamps back through many decades of history.
JavaScript: Math.floor(Date.now() / 1000). Python: import time; int(time.time()). PHP: time(). Go: time.Now().Unix(). Java: System.currentTimeMillis() / 1000. MySQL: UNIX_TIMESTAMP(). PostgreSQL: EXTRACT(EPOCH FROM now()). Linux/macOS terminal: date +%s.