Timestamp Converter
Convert between Unix timestamps (seconds/milliseconds), ISO 8601, RFC 3339, and human-readable dates. Works entirely in your browser.
Timestamp Input
Supports Unix seconds, milliseconds, ISO 8601, RFC 3339, and human-readable dates.
Input format examples
170000000017000000000002023-11-15T10:30:00Z2023-11-15T10:30:00+00:00Nov 15, 2023 10:30:00Converted Formats
Enter a timestamp and click Convert or press Use Current Time.
Understanding Epoch Time & Formats
The Unix Epoch: January 1, 1970 UTC
Unix time counts seconds elapsed since 00:00:00 UTC on 1 January 1970 (the "epoch"). This arbitrary reference point was chosen by Ken Thompson and Dennis Ritchie during early Unix development at Bell Labs.
The epoch is timezone-agnostic β it represents the same instant worldwide. A Unix timestamp of 0 equals 1970-01-01T00:00:00Z (ISO 8601) or Thu, 01 Jan 1970 00:00:00 GMT (RFC 3339).
# Unix epoch in various formats
Unix seconds: 0
Unix milliseconds: 0
ISO 8601: 1970-01-01T00:00:00.000Z
RFC 3339: 1970-01-01T00:00:00+00:00
Human (UTC): Thursday, January 1, 1970 12:00:00 AM
Leap Seconds & Unix Time
Unix time ignores leap seconds β it assumes every day has exactly 86,400 seconds. When a positive leap second is added (e.g., 23:59:60), Unix time repeats the previous second. This keeps time monotonically increasing but means Unix time drifts from true UTC by up to 27 seconds (as of 2024).
# During a leap second (e.g., 2016-12-31)
23:59:58 UTC β Unix: 1483228798
23:59:59 UTC β Unix: 1483228799
23:59:60 UTC β Unix: 1483228799 (repeated!)
00:00:00 UTC β Unix: 1483228800
Year 2038 Problem (32-bit Integer Overflow)
32-bit signed integers max out at 2,147,483,647 (0x7FFFFFFF). This corresponds to 03:14:07 UTC on 19 January 2038. After this, 32-bit timestamps wrap to negative values (December 1901).
# 32-bit max
2147483647 β 2038-01-19 03:14:07 UTC
# 64-bit max (practically infinite)
9223372036854775807 β 292,277,026,596-12-04 15:30:07 UTC
ISO 8601 vs RFC 3339
Both are date-time interchange formats, but with key differences:
- ISO 8601: Broader β allows basic format (
20231115T103000Z), week dates (2023-W46-3), ordinal dates (2023-319), time intervals, durations. - RFC 3339: Strict profile of ISO 8601 for internet protocols β requires
YYYY-MM-DDTHH:MM:SSΒ±HH:MMorZ, forbids basic format and extensions. - Key difference: RFC 3339 mandates
:in timezone offset (+00:00); ISO 8601 allows+0000.
# ISO 8601 (all valid)
2023-11-15T10:30:00Z
2023-11-15T10:30:00+00:00
2023-11-15T10:30:00+0000
2023-W46-3
2023-319
# RFC 3339 (valid)
2023-11-15T10:30:00Z
2023-11-15T10:30:00+00:00
2023-11-15T10:30:00-05:00
# RFC 3339 (INVALID in RFC 3339, valid in ISO 8601)
2023-11-15T10:30:00+0000 β missing colon in offset
20231115T103000Z β basic format
Developer Snippets
JavaScript / TypeScript
Modern Date APIs and Temporal (stage 3 proposal).
// Current epoch (seconds)
const epochSeconds = Math.floor(Date.now() / 1000);
// Current epoch (milliseconds)
const epochMs = Date.now();
// Parse any supported format
const date = new Date('2023-11-15T10:30:00Z');
const date2 = new Date(1700000000 * 1000); // from seconds
// Convert to formats
date.toISOString(); // ISO 8601: "2023-11-15T10:30:00.000Z"
date.toISOString().replace('Z', '+00:00'); // RFC 3339
date.toLocaleString(); // Human readable
date.toUTCString(); // UTC string
Math.floor(date.getTime() / 1000); // Unix seconds
// Temporal (future standard)
import { Instant } from '@js-temporal/polyfill';
const instant = Instant.now();
instant.epochSeconds; // BigInt seconds
instant.epochMilliseconds; // BigInt milliseconds
instant.toString(); // ISO 8601 with nanoseconds
Python
Built-in datetime and time modules.
import time
from datetime import datetime, timezone
# Current epoch (seconds, float)
epoch = time.time()
epoch_int = int(time.time())
# Current epoch (milliseconds)
epoch_ms = int(time.time() * 1000)
# Parse ISO 8601 / RFC 3339
dt = datetime.fromisoformat('2023-11-15T10:30:00+00:00')
dt = datetime.strptime('2023-11-15T10:30:00Z', '%Y-%m-%dT%H:%M:%S%z')
# From Unix timestamp
dt = datetime.fromtimestamp(1700000000, tz=timezone.utc)
# Convert to formats
dt.isoformat() # ISO 8601: "2023-11-15T10:30:00+00:00"
dt.strftime('%Y-%m-%dT%H:%M:%S%z') # RFC 3339-like
dt.timestamp() # Unix seconds (float)
int(dt.timestamp()) # Unix seconds (int)
int(dt.timestamp() * 1000) # Unix milliseconds
# For older Python (< 3.11), use dateutil.parser
# from dateutil import parser
# dt = parser.isoparse('2023-11-15T10:30:00Z')
Go
Standard library time package with time.Time.
import (
"fmt"
"time"
)
func main() {
// Current epoch (seconds)
epoch := time.Now().Unix()
// Current epoch (milliseconds)
epochMs := time.Now().UnixMilli()
// Parse RFC 3339 / ISO 8601
t, _ := time.Parse(time.RFC3339, "2023-11-15T10:30:00Z")
t, _ = time.Parse(time.RFC3339, "2023-11-15T10:30:00+00:00")
// From Unix timestamp
t = time.Unix(1700000000, 0) // seconds
t = time.UnixMilli(1700000000000) // milliseconds
// Convert to formats
fmt.Println(t.Format(time.RFC3339)) // RFC 3339
fmt.Println(t.Format(time.RFC3339Nano)) // RFC 3339 with nanos
fmt.Println(t.Unix()) // Unix seconds
fmt.Println(t.UnixMilli()) // Unix milliseconds
fmt.Println(t.String()) // Human readable (local)
fmt.Println(t.UTC().String()) // Human readable (UTC)
}
Bash / Command Line
date command (GNU coreutils / BSD) and perl/python one-liners.
# Current epoch (seconds)
date +%s
# Current epoch (milliseconds)
date +%s%3N
# Current ISO 8601 / RFC 3339
date -u +%Y-%m-%dT%H:%M:%SZ
date -u --iso-8601=seconds
# From epoch to human
date -d @1700000000
date -u -d @1700000000 +%Y-%m-%dT%H:%M:%SZ
# From ISO 8601 to epoch
date -d '2023-11-15T10:30:00Z' +%s
# From human to epoch
date -d 'Nov 15 2023 10:30:00' +%s
# Using perl (works everywhere)
perl -e 'print time, "
"' # epoch seconds
perl -e 'print int(time*1000), "
"' # epoch milliseconds
perl -MPOSIX -e 'print strftime("%Y-%m-%dT%H:%M:%SZ", gmtime), "
"' # ISO 8601
# Using python one-liner
python3 -c "import time; print(int(time.time()))"
python3 -c "from datetime import datetime; print(datetime.now().isoformat())"
python3 -c "import sys, datetime; print(int(datetime.datetime.fromisoformat(sys.argv[1]).timestamp()))" "2023-11-15T10:30:00Z"
Frequently Asked Questions
- No. All conversion happens entirely in your browser. Your data never leaves your device.
- Unix seconds (e.g., 1700000000), Unix milliseconds (e.g., 1700000000000), ISO 8601 (e.g., 2023-11-15T10:30:00Z), RFC 3339, and human-readable dates.
- Numeric values under 1e11 are treated as Unix seconds; larger values as milliseconds. ISO/RFC date strings are parsed natively by the Date constructor.
- A human-readable description like "2 hours ago" or "in 3 days" comparing the timestamp to now.
- Once the page is loaded, the tool works offline because all logic runs client-side.
Use Cases
Software developers constantly convert between Unix timestamps, ISO 8601 strings, and human-readable dates. The Timestamp Converter handles epoch seconds, milliseconds, and local time zones in a single page, removing the manual math that slows down debugging, testing, and incident response across development, staging, and production environments.
Engineers use it to correlate log entries across distributed systems. When Apache logs, application traces, and database records each carry timestamps in a different format, normalizing them to one chronological timeline makes root-cause analysis faster and far more reliable during outages.
API developers verify endpoints that return epoch values by converting response payloads into readable dates. This confirms that expiration, creation, and update fields are correct without writing throwaway conversion scripts or spinning up a REPL.
Database administrators turn stored UNIX timestamps into readable formats for audits, compliance reports, and data exports. Frontend engineers check how date libraries render specific epochs across browsers and time zones before shipping UI changes that affect customers.
Security teams analyze incident timelines by normalizing firewall, proxy, and identity-provider logs into one chronological view, which shortens triage during active incidents. QA engineers validate that scheduled jobs and cron triggers fire at the intended wall-clock time, and that time-sensitive cache headers expire exactly when expected.
How-To
- Paste a Unix timestamp in seconds or milliseconds into the input field.
- Pick the output format: human-readable date, ISO 8601, or RFC 3339.
- Choose your time zone, or leave it at UTC for consistent cross-team comparisons.
- Click Convert to see the result instantly, with no page reload or round-trip to a server.
- Copy the converted value with one click and paste it into code, logs, or documentation.
- Reverse the process by entering a date string to generate the matching epoch value.
- Test edge cases such as negative timestamps, leap years, and daylight-saving transitions.
The tool runs entirely in your browser, so timestamps never leave your machine. That makes it safe for debugging production logs and sensitive application data without exposing values to external servers, third-party APIs, or untrusted online converters.
Bookmark the Timestamp Converter as part of your daily developer toolkit. Fast, local, and format-flexible, it removes friction from every workflow that touches time, whether you are debugging a live incident or documenting an API contract for a new service.