Python Unix Timestamps Cheatsheet
Last updated May 2026
Python Timestamps Cheatsheet
Every timestamp operation you need. Print or save as PDF.
Get Current Timestamp
import time from datetime import datetime, timezone # Unix seconds (float) time.time() # → 1733529600.123 # Unix seconds (integer) int(time.time()) # → 1733529600 # datetime object (UTC) datetime.now(timezone.utc) # datetime object (local) datetime.now()
Timestamp → datetime
from datetime import datetime, timezone
ts = 1733529600
# → UTC datetime
datetime.fromtimestamp(ts, tz=timezone.utc)
# → Local datetime
datetime.fromtimestamp(ts)
# → ISO 8601 string
datetime.fromtimestamp(ts, tz=timezone.utc).isoformat()
# "2024-12-07T04:00:00+00:00"
# → Formatted string
datetime.fromtimestamp(ts, tz=timezone.utc) \
.strftime('%Y-%m-%d %H:%M:%S UTC')datetime → Timestamp
from datetime import datetime, timezone
# datetime → Unix seconds (MUST be UTC-aware)
dt = datetime(2024, 12, 7, 4, 0, 0, tzinfo=timezone.utc)
int(dt.timestamp())
# → 1733529600
# String → Unix seconds
dt = datetime.fromisoformat('2024-12-07T04:00:00+00:00')
int(dt.timestamp())
# Naive datetime (assume UTC) → timestamp
dt_naive = datetime(2024, 12, 7, 4, 0, 0)
int(dt_naive.replace(tzinfo=timezone.utc).timestamp())Timezone Handling
from datetime import datetime, timezone
import zoneinfo # Python 3.9+
ts = 1733529600
utc_dt = datetime.fromtimestamp(ts, tz=timezone.utc)
# Convert to any timezone
ny_tz = zoneinfo.ZoneInfo('America/New_York')
ny_dt = utc_dt.astimezone(ny_tz)
# Python 3.8 and below — use pytz
# import pytz
# ny_tz = pytz.timezone('America/New_York')
# ny_dt = utc_dt.astimezone(ny_tz)
# Format with timezone name
ny_dt.strftime('%Y-%m-%d %H:%M:%S %Z')
# "2024-12-06 23:00:00 EST"strftime Format Codes
# Common format codes %Y # 4-digit year: 2024 %m # Month (01-12): 12 %d # Day (01-31): 07 %H # Hour 24h (00-23): 04 %I # Hour 12h (01-12): 04 %M # Minutes (00-59): 00 %S # Seconds (00-59): 00 %f # Microseconds: 000000 %Z # Timezone name: UTC %z # UTC offset: +0000 %A # Weekday name: Saturday %j # Day of year: 342 %U # Week number: 49 # Common patterns '%Y-%m-%d' # 2024-12-07 '%Y-%m-%dT%H:%M:%SZ' # ISO 8601 UTC '%d/%m/%Y %H:%M' # 07/12/2024 04:00
⚠️ Common Mistakes
import time from datetime import datetime, timezone # ✗ WRONG — naive datetime, timezone ambiguous dt = datetime(2024, 12, 7, 4, 0, 0) dt.timestamp() # Assumes LOCAL time, not UTC! # ✓ RIGHT — always add UTC timezone dt = datetime(2024, 12, 7, 4, 0, 0, tzinfo=timezone.utc) int(dt.timestamp()) # → 1733529600 # ✗ WRONG — time.time() is a float ts = time.time() # 1733529600.1234 # ✓ RIGHT — convert to int ts = int(time.time()) # ✗ WRONG — utcnow() is deprecated in 3.12 # datetime.utcnow() # ✓ RIGHT datetime.now(timezone.utc)
Date Arithmetic
from datetime import datetime, timezone, timedelta now = datetime.now(timezone.utc) # Add/subtract time tomorrow = now + timedelta(days=1) last_week = now - timedelta(weeks=1) in_1_hour = now + timedelta(hours=1) # Duration between two datetimes delta = dt2 - dt1 delta.total_seconds() # float delta.days # integer days # Duration between two Unix timestamps diff = ts2 - ts1 # seconds days = diff // 86400 hours = (diff % 86400) // 3600
Expiry Checks
import time now = int(time.time()) # Check JWT expiry is_expired = payload['exp'] < now # Time until expiry seconds_left = payload['exp'] - now minutes_left = seconds_left // 60 # Create expiry timestamps ONE_HOUR = 3600 expiry = now + ONE_HOUR SESSION_TTL = 30 * 60 # 30 minutes session_expiry = now + SESSION_TTL is_valid = now < session_expiry
Parsing Common Formats
from datetime import datetime
# ISO 8601
datetime.fromisoformat('2024-12-07T04:00:00+00:00')
# Custom format
datetime.strptime(
'07/Dec/2024:04:00:00 +0000',
'%d/%b/%Y:%H:%M:%S %z'
)
# Unix timestamp string → int
ts = int('1733529600')
# Apache/nginx log timestamp → epoch seconds
datetime.strptime(
'07/Dec/2024:04:00:00 +0000',
'%d/%b/%Y:%H:%M:%S %z'
).timestamp()Useful Constants
import time from datetime import datetime, timezone ONE_MINUTE = 60 ONE_HOUR = 3_600 ONE_DAY = 86_400 ONE_WEEK = 604_800 ONE_MONTH = 2_592_000 # 30 days ONE_YEAR = 31_536_000 # 365 days # Famous timestamps UNIX_EPOCH = 0 # 1970-01-01 Y2K = 946684800 # 2000-01-01 Y2038_LIMIT = 2147483647 # 2038-01-19 # Current timestamp NOW = int(time.time()) # Is current year a leap year? year = datetime.now(timezone.utc).year is_leap = (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
unixcalculator.com — Free developer tools & timestamp reference · /tools/timestamp-api · /tutorials/javascript-timestamps