Understanding Unix Epoch Timestamps, ISO-8601 Timezones, and Cron Job Expressions
Master 10-digit vs 13-digit Unix epoch timestamps, the Year 2038 32-bit overflow, IANA timezone conversions (UTC, IST, EST/EDT), and 5-field cron syntax.
Distributed databases, JWT authentication tokens, server log files, and scheduled background jobs all depend on a single unambiguous representation of time. Storing human-formatted local strings like 03/04/2026 02:30 PM quickly causes bugs across regions because of ambiguous date ordering (MM/DD vs DD/MM) and Daylight Saving Time (DST) transitions. Modern software engineering solves this with Unix Epoch Timestamps, ISO-8601 UTC strings, and IANA Timezone identifiers.
1. What Is the Unix Epoch (1970-01-01T00:00:00Z)?
Under IEEE Std 1003.1 (POSIX), a Unix timestamp counts the number of elapsed seconds since the Unix Epoch: 00:00:00 UTC on 1 January 1970 (excluding leap seconds). Because it is anchored strictly to Coordinated Universal Time (UTC), a Unix timestamp is identical at any given instant whether your server runs in Mumbai, Frankfurt, or Virginia.
10-Digit Seconds vs. 13-Digit Milliseconds
One of the most frequent bugs when integrating APIs is mixing seconds and milliseconds:
| Precision | Digit Count (Current Era) | Example Value (2026-10-23T00:00:00Z) | Common Languages / APIs |
|---|---|---|---|
| Seconds | 10 digits | 1792713600 | Unix/POSIX, Python time.time(), PHP time(), Go time.Now().Unix(), JWT exp / iat claims, PostgreSQL |
| Milliseconds | 13 digits | 1792713600000 | JavaScript Date.now(), Java System.currentTimeMillis(), Stripe webhooks (some SDKs), MongoDB BSON Date |
If a JavaScript frontend passes a 10-digit Unix timestamp (1792713600) directly into new Date(1792713600) without multiplying by 1000, JavaScript interprets it as 1.79 billion *milliseconds* after Jan 1, 1970—rendering a date in January 1970! Conversely, passing a 13-digit millisecond timestamp to a library expecting seconds yields a year past 58,000 CE.
Convert both 10-digit (seconds) and 13-digit (milliseconds) epoch integers into human-readable UTC, local time, and ISO-8601 strings instantly using the EverySolve Unix Timestamp Converter.
2. The Year 2038 Problem (2,147,483,647)
Legacy systems that store Unix timestamps in a signed 32-bit integer (int32) can represent a maximum positive value of:
Adding 2,147,483,647 seconds to 1970-01-01T00:00:00Z reaches 03:14:07 UTC on 19 January 2038. One second later, a signed 32-bit integer overflows to -2,147,483,648, which corresponds to 13 December 1901. Modern 64-bit operating systems, databases (BIGINT / TIMESTAMPTZ), and application runtimes store timestamps as 64-bit integers, pushing the overflow horizon out by ~292 billion years. However, embedded IoT firmware, 32-bit binary file formats, and legacy SQL columns calculating 15-to-30-year mortgage or bond maturities must already use 64-bit date types today.
3. ISO-8601 Strings and IANA Timezone Offsets
When exchanging human-readable timestamps in JSON payloads, ISO-8601 (RFC 3339) is the universal standard:
- UTC Zero Offset:
2026-10-23T09:00:00Z(whereZstands for Zulu / UTC+00:00). - Indian Standard Time (IST /
Asia/Kolkata):2026-10-23T14:30:00+05:30(India observes a single year-round half-hour offset of UTC+05:30 with no Daylight Saving Time). - US Eastern Time (
America/New_York): Shifts between EST (UTC-05:00) in winter and EDT (UTC-04:00) during Daylight Saving Time.
Best Practice for Multi-Region Meetings: Never hardcode fixed hour differences between India (Asia/Kolkata) and North America or Europe. Because the US and Europe shift their clocks twice a year while India remains atUTC+05:30, a 9:00 AM New York standup moves from 7:30 PM IST (winter EST) to 6:30 PM IST (summer EDT).
Compare live offsets and convert meeting times across global IANA zones (UTC, Asia/Kolkata, America/New_York, Europe/London, Asia/Tokyo, and more) with the EverySolve Timezone Converter.
4. Decoding 5-Field POSIX Cron Job Expressions
When scheduling automated server backups, database cleanups, or report emails, POSIX crontab syntax defines recurring schedules using 5 space-separated fields:
┌───────────── Minute (0 - 59)
│ ┌───────────── Hour (0 - 23)
│ │ ┌───────────── Day of the Month (1 - 31)
│ │ │ ┌───────────── Month (1 - 12)
│ │ │ │ ┌───────────── Day of the Week (0 - 6, Sunday = 0)
│ │ │ │ │
* * * * *
Special Cron Operators & Production Examples
| Cron Expression | Operator Meaning | Plain-English Execution Schedule |
|---|---|---|
*/15 * * * * | / (Step value) | Runs every 15 minutes (at :00, :15, :30, :45) |
0 2 * * * | Exact match | Runs daily at 02:00 AM server time |
30 9 * * 1-5 | - (Range) | Runs at 09:30 AM Monday through Friday (weekdays only) |
0 0 1,15 * * | , (List) | Runs at midnight on the 1st and 15th of every month |
0 3 * * 0 | Day of week 0 | Runs at 03:00 AM every Sunday |
Before deploying a scheduled job to Linux cron, GitHub Actions, or Kubernetes CronJob, translate any 5-field expression into plain English and inspect its field-by-field breakdown with the EverySolve Cron Expression Parser.
For calendar math involving leap years, working-day intervals, and decimal payroll hours, read our guide on Everyday Date, Time & Health Calculators.
Standards & Technical References
- IEEE Std 1003.1 (POSIX.1) — Base Definitions, Section 4.16: Seconds Since the Epoch — IEEE / The Open Group (Reference)
- RFC 3339 — Date and Time on the Internet: Timestamps (ISO-8601 Profile) — Internet Engineering Task Force (IETF) (Reference)
- Time Zone Database (tzdb / Olson Database) — Internet Assigned Numbers Authority (IANA) (Reference)
Epoch definitions, ISO-8601 representations, IANA timezone offsets, and POSIX crontab syntax verified against IEEE Std 1003.1 (POSIX.1), ISO 8601-1:2019, and the IANA Time Zone Database. EverySolve guides are written and maintained by our engineering and editorial team to document exact formulas, file-format standards, and browser-based workflows.
Frequently Asked Questions
How can I quickly tell if a Unix timestamp is in seconds or milliseconds?
Count the digits. For dates between late 2001 and 2286, a timestamp in seconds has 10 digits (e.g., 1792713600), whereas a timestamp in milliseconds has 13 digits (e.g., 1792713600000).
Does Unix epoch time change when I travel to a different timezone?
No. A Unix timestamp always measures seconds elapsed since 1970-01-01T00:00:00Z (UTC). Timezones only affect how that integer is formatted into a local wall-clock string for display.
What timezone do GitHub Actions and cloud CronJobs use by default?
GitHub Actions scheduled workflows and most cloud-native cron schedulers evaluate 5-field cron expressions strictly in UTC (Coordinated Universal Time), whereas a Linux server's local crontab uses the host machine's configured system timezone unless CRON_TZ is set.
Related Online Tools
-
Timestamp / Unix Epoch Converter
Convert Unix epoch timestamps to human-readable dates and UTC / local ISO time format.
-
Timezone Converter
Convert dates and times across major global timezones.
-
Cron Expression Parser
Parse cron schedules into human-readable plain language descriptions.
Related Guides & Tutorials
-
Everyday Calculators Guide: How to Calculate BMR, TDEE, BMI, Age & Work Hours
Learn the clinical and mathematical formulas behind Basal Metabolic Rate (BMR), TDEE maintenance calories, BMI categories, calendar age, and decimal payroll hours.
-
How to Format, Pretty-Print, and Debug Broken JSON Data
Turn unreadable single-line API payloads into indented JSON trees, minify payloads for production transit, and fix the 5 most common RFC 8259 syntax errors.
-
How to Test and Debug Regular Expressions (Regex) Without Backtracking Bugs
Learn practical regular expression syntax, capture groups, lookaheads, and flags, and avoid common mistakes like broken email TLDs and catastrophic backtracking.