Unix Timestamp & Epoch Converter

Accurately convert between Unix epoch timestamps (seconds, milliseconds, and microseconds) and human-readable calendar dates in UTC, ISO 8601, and local time zones.

Current Unix Timestamp (Epoch)
1790593930

Milliseconds: 1790593930000 | Mon, 28 Sep 2026 11:12:10 GMT

Timestamp to Human Date
Human Date to Timestamp
Epoch Timestamp Quick Reference Table
DurationSecondsFormula / Representation
1 Minute6060 seconds
1 Hour3,60060 × 60
1 Day86,40024 × 3600
1 Week604,8007 × 86400
1 Month (30.44 days)2,629,743Average Gregorian month
1 Year (365 days)31,536,000365 × 86400
Year 2038 Problem (32-bit max)2,147,483,647January 19, 2038, 03:14:07 UTC

Comprehensive Guide to Unix Time & The Epoch Standard

In computing, Unix time (also known as POSIX time, Epoch time, or Unix timestamp) is a universal system for tracking time points. It is defined as the elapsed duration in seconds since 00:00:00 Coordinated Universal Time (UTC) on Thursday, January 1, 1970, not counting leap seconds. This arbitrary reference moment in history is universally referred to as the Unix Epoch.

Before the widespread adoption of the Unix epoch standard in operating systems, various computing platforms tracked time using proprietary, architecture-dependent schemes. For instance, early IBM mainframes tracked clock cycles, and CP/M used customized date offsets. In the early 1970s, Dennis Ritchie and Ken Thompson chose January 1, 1970 as a convenient, rounded epoch milestone when designing the original Unix operating system on Digital Equipment Corporation (DEC) PDP-11 computers. Today, nearly all contemporary operating systems—including Linux, macOS, iOS, Android, and Windows—along with the internet protocols governing HTTP, TLS, DNS, and NTP, rely on Unix epoch timestamps for scheduling, caching, token signing, and event ordering.

Understanding Timestamp Precisions: Seconds, Milliseconds, & Microseconds

Different software ecosystems use different granularities when representing Unix timestamps. Understanding these differences is essential for troubleshooting serialization errors, API mismatches, and database query anomalies:

Seconds (10 Digits)

Example: 1711620000

The classic POSIX standard. Used natively by Linux kernel system calls, C/C++ time_t, Python time.time(), PHP time(), and relational SQL databases (e.g. MySQL UNIX_TIMESTAMP()). Suitable for general logging, expiration dates, and file timestamps.

Milliseconds (13 Digits)

Example: 1711620000000

The standard for JavaScript (Date.now()), Java (System.currentTimeMillis()), and modern JSON API schemas. Crucial for web user interfaces, animations, and client-side telemetry where sub-second accuracy is necessary.

Microseconds / Nanoseconds

Example: 1711620000000000 (16-19 Digits)

Employed in high-frequency trading (HFT), distributed tracing frameworks (OpenTelemetry), and Golang time.Now().UnixNano(). Enables microsecond-level synchronization between microservices and kernel tracing profilers.

The Year 2038 Problem (Y2038): What Every Engineer Should Know

The Year 2038 Problem (historically termed the Unix Millennium Bug or Y2038) is a computing issue caused by 32-bit hardware architectures and legacy software libraries that store epoch time in a signed 32-bit integer (int32).

A signed 32-bit binary integer can only represent values from -2,147,483,648 up to +2,147,483,647. Because time counts continuously upwards, at 03:14:07 UTC on Tuesday, January 19, 2038, the counter will reach its maximum capacity and roll over into negative numbers (-2,147,483,648). Legacy systems that have not been patched will suddenly interpret the year as 1901, precipitating widespread logic failures in embedded systems, automotive controllers, medical devices, and older database engines.

How is the Industry Solving Y2038?Modern 64-bit operating systems (Linux x86_64, ARM64, Windows 64-bit) define time_t as a signed 64-bit integer (int64). A 64-bit integer can record up to 9,223,372,036,854,775,807 seconds—sufficient to accurately measure dates until approximately the year 292,277,026,596 AD, completely eliminating overflow concerns for modern web applications.

Working with Unix Timestamps Across Programming Languages

Below is an idiomatic cheatsheet demonstrating how to retrieve the current epoch timestamp, convert epoch integers into formatted date strings, and parse date strings into timestamps across popular backend and frontend programming environments:

JavaScript & TypeScript (Node.js & Browser)
// 1. Current timestamp in seconds & milliseconds
const epochSeconds = Math.floor(Date.now() / 1000);
const epochMillis = Date.now();

// 2. Convert epoch timestamp to Human Date
const date = new Date(epochSeconds * 1000);
console.log(date.toUTCString()); // "Sun, 28 Mar 2026 12:00:00 GMT"
console.log(date.toISOString()); // "2026-03-28T12:00:00.000Z"

// 3. Convert Date string to epoch seconds
const parsedEpoch = Math.floor(new Date('2026-03-28T12:00:00Z').getTime() / 1000);
Python 3
import time
from datetime import datetime, timezone

# 1. Current timestamp in seconds
now_seconds = int(time.time())

# 2. Convert epoch to formatted UTC string
dt = datetime.fromtimestamp(now_seconds, tz=timezone.utc)
print(dt.strftime('%Y-%m-%d %H:%M:%S UTC'))

# 3. Convert ISO string to epoch seconds
parsed_dt = datetime.fromisoformat('2026-03-28T12:00:00+00:00')
epoch = int(parsed_dt.timestamp())
Go (Golang)
package main
import (
    "fmt"
    "time"
)

func main() {
    // Current timestamp in seconds and nanoseconds
    now := time.Now()
    sec := now.Unix()
    nano := now.UnixNano()

    // Convert epoch to time object
    t := time.Unix(sec, 0).UTC()
    fmt.Println(t.Format(time.RFC3339))
}
Java 8+ (java.time)
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;

// 1. Current epoch seconds & millis
long epochSec = Instant.now().getEpochSecond();
long epochMillis = Instant.now().toEpochMilli();

// 2. Convert to UTC String
String formatted = Instant.ofEpochSecond(epochSec)
    .atZone(ZoneOffset.UTC)
    .format(DateTimeFormatter.ISO_INSTANT);

Key Historical & Future Epoch Milestones

Refer to this timeline of significant moments in computer history and distributed systems:

Unix TimestampCalendar Date & Time (UTC)Significance / Historical Event
-2,147,483,648December 13, 1901, 20:45:52 UTCMinimum value for signed 32-bit integer
0January 1, 1970, 00:00:00 UTCThe official beginning of Unix Epoch time
1,000,000,000September 9, 2001, 01:46:40 UTCThe 'Unix Billepoch' milestone celebrated by programmers
1,500,000,000July 14, 2017, 02:40:00 UTC1.5 Billion seconds milestone
2,000,000,000May 18, 2033, 03:33:20 UTC2.0 Billion seconds milestone
2,147,483,647January 19, 2038, 03:14:07 UTCMaximum signed 32-bit integer (Year 2038 overflow point)

Frequently Asked Questions

Unix Epoch time (also referred to as POSIX time or Unix timestamp) represents the total number of seconds that have elapsed since Thursday, 1 January 1970 00:00:00 Coordinated Universal Time (UTC), minus leap seconds. It provides an unambiguous, universal, and timezone-agnostic representation of time that computer systems, relational databases, distributed loggers, and network protocols can store and compare as a simple integer without parsing complex calendar strings.

Standard Unix operating systems, POSIX system calls, C libraries, PHP, and Python traditionally measure epoch time in whole seconds (producing a 10-digit integer such as 1711620000). In contrast, JavaScript (Date.now()), Java (System.currentTimeMillis()), and modern distributed tracing tools measure time in milliseconds (producing a 13-digit integer such as 1711620000000). Microsecond (16 digits) and nanosecond (19 digits) timestamps are also commonly used in high-frequency trading platforms and Go (time.Now().UnixNano()). Our tool automatically inspects the integer length to format either precision seamlessly.

The Year 2038 Problem (also known as the Unix Millennium Bug or Y2038) arises in legacy computer hardware and 32-bit operating systems where time is stored as a 32-bit signed integer. The maximum positive value of a signed 32-bit integer is 2,147,483,647. On Tuesday, 19 January 2038 at 03:14:07 UTC, this integer will overflow into negative numbers (-2,147,483,648), causing affected legacy software to calculate dates backwards into December 13, 1901. Modern 64-bit systems have migrated to 64-bit signed integers, which can accurately track time for approximately 292 billion years.

Unlike the International Atomic Time (TAI) standard which counts continuous SI seconds, POSIX Unix time assumes that every normal day consists of exactly 86,400 seconds. When the International Earth Rotation and Reference Systems Service (IERS) introduces a leap second to keep clocks synchronized with the Earth's slowing rotation, Unix systems repeat second 86,400 or utilize NTP leap smearing to stretch seconds across an operational window. Consequently, Unix time is not an exact linear measure of physical duration, but rather a consistent calendar index.

Unix timestamps are completely immune to Daylight Saving Time (DST) changes because they are strictly calculated relative to UTC (Coordinated Universal Time), which never shifts for seasonal clock adjustments. Timezone offsets and DST transitions only affect the human-readable string representation displayed on the user's screen during formatting, not the underlying stored epoch timestamp.

Relational database engines such as PostgreSQL, MySQL, and SQLite, along with NoSQL databases like MongoDB and Cassandra, frequently store timestamps internally as 64-bit integers representing milliseconds or microseconds since 1970. In PostgreSQL, the 'timestamptz' data type stores values in UTC and converts them automatically to the client's session timezone upon retrieval.

Yes. By using signed integers, dates prior to January 1, 1970 are represented by negative values. For example, a timestamp of -86,400 represents Wednesday, December 31, 1969 00:00:00 UTC. Signed 64-bit integers can represent historical and cosmological dates spanning billions of years into the past.

In AWS Lambda (Node.js runtime), use Date.now() / 1000. In Python serverless functions, invoke time.time(). In shell scripts executing inside Docker containers or Kubernetes pods, run 'date +%s'. In SQL queries, invoke 'SELECT UNIX_TIMESTAMP()' in MySQL or 'SELECT EXTRACT(EPOCH FROM NOW())' in PostgreSQL.

Explore Related Tools

Hand-picked utilities and calculators related to this tool.

Developer Tools