Epoch Time in Python

Python's time and datetime modules make it easy to work with Unix timestamps. Here's the complete reference.

Get the current Unix timestamp

Python
import time

int(time.time())                    # seconds, e.g. 1700000000
time.time()                         # float with sub-second precision
time.time_ns()                      # nanoseconds (Python 3.7+)
time.time_ns() // 1_000_000         # milliseconds

Convert epoch to datetime

Python
from datetime import datetime, timezone

epoch = 1700000000

# UTC datetime (recommended — always timezone-aware)
dt_utc = datetime.fromtimestamp(epoch, tz=timezone.utc)
print(dt_utc)                       # 2023-11-14 22:13:20+00:00
print(dt_utc.isoformat())           # "2023-11-14T22:13:20+00:00"

# Local time (naive — no timezone info)
dt_local = datetime.fromtimestamp(epoch)
print(dt_local)

# UTC only (alternative)
dt_utc2 = datetime.utcfromtimestamp(epoch)  # naive UTC

Convert datetime to epoch

Python
from datetime import datetime, timezone

# From an aware datetime (recommended)
dt = datetime(2023, 11, 14, 22, 13, 20, tzinfo=timezone.utc)
epoch = int(dt.timestamp())         # 1700000000

# From a naive datetime (assumes local time)
dt_naive = datetime(2023, 11, 14, 22, 13, 20)
epoch = int(dt_naive.timestamp())

# From a date string
dt = datetime.fromisoformat("2023-11-14T22:13:20+00:00")
epoch = int(dt.timestamp())

Handle timezones with zoneinfo (Python 3.9+)

Python
from datetime import datetime
from zoneinfo import ZoneInfo

epoch = 1700000000

# Convert to a specific timezone
dt_ist = datetime.fromtimestamp(epoch, tz=ZoneInfo("Asia/Kolkata"))
print(dt_ist)                       # 2023-11-15 03:43:20+05:30

dt_ny = datetime.fromtimestamp(epoch, tz=ZoneInfo("America/New_York"))
print(dt_ny)                        # 2023-11-14 17:13:20-05:00

Format a timestamp as string

Python
from datetime import datetime, timezone

dt = datetime.fromtimestamp(1700000000, tz=timezone.utc)

dt.strftime("%Y-%m-%d %H:%M:%S")    # "2023-11-14 22:13:20"
dt.strftime("%d/%m/%Y %H:%M")       # "14/11/2023 22:13"
dt.isoformat()                      # "2023-11-14T22:13:20+00:00"

Add / subtract time

Python
from datetime import datetime, timezone, timedelta

now = datetime.now(timezone.utc)
one_day_later  = now + timedelta(days=1)
one_hour_ago   = now - timedelta(hours=1)
thirty_days    = now + timedelta(days=30)

# Back to epoch
int(one_day_later.timestamp())

Parse common log timestamp formats

Python
from datetime import datetime, timezone

# ISO 8601
datetime.fromisoformat("2023-11-14T22:13:20+00:00")

# Custom format
datetime.strptime("14/Nov/2023:22:13:20 +0000", "%d/%b/%Y:%H:%M:%S %z")

# Unix ms from JS (e.g. Date.now())
ms = 1700000000000
datetime.fromtimestamp(ms / 1000, tz=timezone.utc)

Use the live epoch converter to convert any Python timestamp instantly.