What is Unix Time? A Complete Guide
Understanding epoch timestamps and why they're essential for developers
Unix time (also known as epoch time, POSIX time, or Unix timestamp) is a system for tracking time as a running total of seconds. It counts the number of seconds that have elapsed since January 1, 1970, at 00:00:00 UTC, a moment known as the "Unix epoch."
Example:
1704067200
= January 1, 2024, 00:00:00 UTC
How Does Unix Time Work?
Unix time is elegantly simple: it's just a number that increases by one every second. At the Unix epoch (January 1, 1970, 00:00:00 UTC), the timestamp was 0. One day later, it was 86400 (60 seconds × 60 minutes × 24 hours).
Key characteristics of Unix time:
- Always UTC: Unix timestamps are timezone-agnostic, always representing UTC time
- Linear: Time only moves forward (ignoring leap second adjustments)
- Compact: A single number represents a complete moment in time
- Universal: The same timestamp means the same instant everywhere in the world
Seconds vs. Milliseconds
The original Unix timestamp uses seconds, but many modern systems usemilliseconds for greater precision. Here's how to tell them apart:
| Format | Digits | Example (Jan 1, 2024) |
|---|---|---|
| Seconds | 10 digits | 1704067200 |
| Milliseconds | 13 digits | 1704067200000 |
JavaScript's Date.now() returns milliseconds, while Python'stime.time() returns seconds as a float.
Why Do Developers Use Unix Time?
Database Storage
Integers are faster to index and compare than date strings
No Timezone Issues
UTC-based, eliminating timezone conversion bugs
Easy Math
Simple arithmetic for durations and comparisons
Universal Standard
Works across all programming languages and systems
Common Use Cases
- API timestamps: REST APIs often return dates as Unix timestamps
- Log files: System logs use epoch time for precise event ordering
- Caching: Cache expiration times are set using Unix timestamps
- JWT tokens: JSON Web Tokens use Unix time for
iatandexpclaims - Database records:
created_atandupdated_atfields - File systems: File modification times are stored as Unix timestamps
The Year 2038 Problem
Many older systems store Unix time as a 32-bit signed integer, which can represent dates up to January 19, 2038, 03:14:07 UTC. After this moment, the timestamp overflows and wraps around to a negative number, potentially causing system failures.
Modern systems use 64-bit integers, which can represent dates billions of years into the future, effectively solving this problem. However, legacy systems and embedded devices may still be vulnerable.
Getting Unix Time in Code
JavaScript
// Current time in milliseconds
Date.now()
// Current time in seconds
Math.floor(Date.now() / 1000)
// Specific date to Unix
new Date('2024-01-01').getTime() / 1000Python
import time
from datetime import datetime
# Current time in seconds (float)
time.time()
# Current time in seconds (integer)
int(time.time())
# Specific date to Unix
datetime(2024, 1, 1).timestamp()PHP
// Current time
time()
// Specific date to Unix
strtotime('2024-01-01')Try Our Converter Tools
Convert between Unix timestamps and human-readable dates instantly.
Related Articles
Understanding UUIDv7
Learn about the new UUID format with embedded timestamps