Convert milliseconds to human-readable date and time formats online for free with this milliseconds to date converter. The tool transforms UNIX timestamps (milliseconds since 1 January 1970) into both UTC and local date/time formats — perfect for developers, data analysts, and anyone working with epoch time in applications, databases, or APIs.
JavaScript and most modern systems count time in milliseconds since the UNIX epoch, so a value like 1690000000000 is a precise moment that this timestamp converter renders in your local timezone and in UTC. To go the other way — turn a chosen date into a timestamp — use the Date to Milliseconds tool, or see the live clock on the Current Date and Time page.
Get the current date and time instantly with this free live online clock. See the exact time in your local timezone and in UTC, the day of the week, and the real-time UNIX timestamp in milliseconds — all updating every second. Perfect for developers, system administrators, and anyone who needs an accurate, always-current world clock with no setup required.
Whether you are debugging a timezone bug, synchronising logs across regions, or simply need today's date in ISO format, this live clock shows every representation you are likely to need at once: local time, UTC, the day of the week, and the epoch millisecond value that databases and APIs use internally. To turn a specific timestamp into a readable date, use the Milliseconds to Date converter.
Different backend frameworks, API gateways, and cloud databases require distinct standard date encodings. Here are the most widely used representations of the current moment:
2026-10-25T14:48:00.000ZSun, 25 Oct 2026 14:48:00 GMT17929420801792942080000Choosing the appropriate timestamp format depends on your storage layer and whether timezone preservation is necessary:
| Format Name | Example Output | Resolution | Standard Use Case |
|---|---|---|---|
| ISO 8601 / RFC 3339 | 2026-10-25T14:48:00.000Z | Milliseconds | JSON REST APIs, MongoDB, PostgreSQL TIMESTAMPTZ |
| UNIX Milliseconds | 1792942080000 | 1 millisecond | JavaScript Date.now(), Redis caches, Kafka timestamps |
| UNIX Seconds (POSIX) | 1792942080 | 1 second | JWT claims (iat, exp), Linux file systems, Python time.time() |
| RFC 2822 | Sun, 25 Oct 2026 14:48:00 GMT | 1 second | HTTP Date & Expires headers, SMTP email headers |
Retrieve the current UTC date, local time, and epoch timestamp across standard programming environments:
// Current epoch milliseconds
const ms = Date.now();
// ISO 8601 string in UTC
const iso = new Date().toISOString();
// Epoch seconds (integer)
const sec = Math.floor(Date.now() / 1000);import time
from datetime import datetime, timezone
# Epoch seconds (float) and milliseconds
sec = int(time.time())
ms = int(time.time() * 1000)
# ISO 8601 in UTC
iso = datetime.now(timezone.utc).isoformat()package main
import (
"fmt"
"time"
)
func main() {
now := time.Now().UTC()
sec := now.Unix()
ms := now.UnixMilli()
iso := now.Format(time.RFC3339)
}-- PostgreSQL
SELECT CURRENT_TIMESTAMP;
SELECT EXTRACT(EPOCH FROM NOW())::BIGINT;
-- MySQL
SELECT NOW();
SELECT UNIX_TIMESTAMP(); A UNIX timestamp (also called epoch or POSIX time) counts the number of seconds — or milliseconds — that have elapsed since midnight on 1 January 1970 UTC, the so-called UNIX epoch. Because it is a single monotonic number with no timezone attached, it is the most reliable way to store and compare moments in time across systems, databases, and APIs. JavaScript's Date object works in milliseconds since the epoch, which is why this clock displays the value in milliseconds.
The same instant reads differently depending on where you are. UTC (Coordinated Universal Time) is the global baseline — it never observes daylight saving — while your local time applies your region's offset and DST rules. A timestamp of 1690000000000 ms is one exact moment, but it may show as 14:26 UTC and 19:56 in Kolkata on the clock at the same instant. Always store and transmit timestamps in UTC or as epoch milliseconds, and convert to local time only for display.
Two classic pitfalls catch developers out. First, the seconds-vs-milliseconds confusion: many APIs return seconds (10 digits), while JavaScript uses milliseconds (13 digits) — multiply or divide by 1000 to convert. Second, the Year 2038 problem: older 32-bit systems store seconds as a signed 32-bit integer that overflows in January 2038; 64-bit and millisecond-based systems are unaffected. To convert a specific moment, use the Date to Milliseconds tool, or reverse the process with Milliseconds to Date.
2026-10-25T14:48:00.000Z), not a localized string, to avoid timezone shifts. A 13-digit millisecond timestamp maps to one exact instant. The UTC reading is fixed; the local reading depends on your timezone:
1690000000000 (milliseconds)UTC: 2023-07-22 08:26:40
Local: depends on your timezone A UNIX timestamp counts time elapsed since the epoch — midnight UTC on 1 January 1970. JavaScript's Date works in milliseconds (13 digits today), while many APIs and Unix shells report seconds (10 digits). Mixing the two is the single most common timestamp bug: a seconds value fed where milliseconds are expected lands decades in the past. This converter expects milliseconds, so multiply a seconds value by 1000 first.
The same instant reads differently across timezones. UTC is the fixed global baseline with no daylight saving; your local time applies your offset. The converter shows both so you can confirm a timestamp regardless of where a user or server sits. Timestamps before the epoch are negative numbers; far-future values may hit limits on 32-bit systems (the Year 2038 problem), but millisecond-based 64-bit JavaScript is unaffected until the year 275760. To convert a date into a timestamp, use the Date to Milliseconds tool.
Converting UNIX epoch milliseconds into human-readable date and time representations across backend and frontend environments:
// Convert timestamp to Date object
const ms = 1715769000000;
const date = new Date(ms);
console.log(date.toISOString()); // "2024-05-15T10:30:00.000Z" (UTC)
console.log(date.toLocaleString()); // Local formatted stringfrom datetime import datetime, timezone
ms = 1715769000000
# Convert milliseconds to seconds float
dt = datetime.fromtimestamp(ms / 1000.0, tz=timezone.utc)
print(dt.strftime('%Y-%m-%d %H:%M:%S UTC'))
# "2024-05-15 10:30:00 UTC"import java.time.Instant;
import java.time.ZoneOffset;
long ms = 1715769000000L;
Instant instant = Instant.ofEpochMilli(ms);
System.out.println(instant.toString()); // 2024-05-15T10:30:00Zpackage main
import ("fmt"; "time")
func main() {
ms := int64(1715769000000)
t := time.UnixMilli(ms).UTC()
fmt.Println(t.Format(time.RFC3339)) // 2024-05-15T10:30:00Z
}A common point of confusion is identifying whether a timestamp is in seconds, milliseconds, microseconds, or nanoseconds:
| Digit Count | Unit | Typical Source | Conversion to Milliseconds |
|---|---|---|---|
| 10 digits | Seconds | UNIX shell, PHP time(), Python time.time() | Multiply by 1,000 |
| 13 digits | Milliseconds | JavaScript Date.now(), Java System.currentTimeMillis() | Direct (Native input for this tool) |
| 16 digits | Microseconds | PostgreSQL, Python datetime.now() internals | Divide by 1,000 |
| 19 digits | Nanoseconds | Go time.Now().UnixNano(), Linux kernel trace | Divide by 1,000,000 |
Legacy 32-bit signed integers overflow on January 19, 2038 at 03:14:07 UTC (reaching 2,147,483,647 seconds), causing systems using 32-bit time_t to wrap into negative numbers and reset to December 13, 1901. Modern web applications and operating systems avoid this limitation by utilizing 64-bit signed integers for epoch timestamps. In 64-bit representation, epoch millisecond timestamps can safely measure dates spanning over 292 million years in both directions without precision loss or integer overflow.