What a Unix timestamp means
A Unix timestamp expresses how far one instant lies from a fixed reference point. That reference is 1970-01-01 00:00:00 UTC, commonly called the Unix epoch.
When the unit is seconds, the epoch is 0, one second later is 1, and one day later is 86400. A continuous number is easier to sort and compare across regions than separate year, month, day, hour and minute fields.
| Unix seconds | UTC | Korea Standard Time |
|---|---|---|
-1 | 1969-12-31 23:59:59 | 1970-01-01 08:59:59 |
0 | 1970-01-01 00:00:00 | 1970-01-01 09:00:00 |
1 | 1970-01-01 00:00:01 | 1970-01-01 09:00:01 |
86400 | 1970-01-02 00:00:00 | 1970-01-02 09:00:00 |
1704067200 | 2024-01-01 00:00:00 | 2024-01-01 09:00:00 |
Why the epoch begins on January 1, 1970
The date is not the beginning of time in a scientific sense. It is a conventional origin chosen for Unix-family timekeeping. Once one origin is fixed, later instants can be positive and earlier instants negative.
The year 1970 is therefore a starting value, not an absolute limit on representable dates. If the numeric and calendar ranges are wide enough, values can describe both dates before 1970 and dates far into the future. For example, -31536000 seconds moves roughly one common year before the epoch.
Epoch versus timestamp
The epoch is the origin; a timestamp is a measured value from that origin. “The Unix epoch is 1970-01-01 UTC” and “this event has timestamp 1704067200” describe different things.
Seconds, milliseconds, microseconds and nanoseconds
Unix time is not always stored in seconds. Systems that need shorter intervals use milliseconds, microseconds or nanoseconds. Without the unit, the same digits can point to a completely different calendar date.
| Unit | Symbol | Units per second | 2024-01-01 00:00:00 UTC |
|---|---|---|---|
| Second | s | 1 | 1704067200 |
| Millisecond | ms | 1,000 | 1704067200000 |
| Microsecond | μs | 1,000,000 | 1704067200000000 |
| Nanosecond | ns | 1,000,000,000 | 1704067200000000000 |
Digit length is only a clue
Positive values near the present are often 10 digits in seconds, 13 in milliseconds, 16 in microseconds and 19 in nanoseconds. Historical dates, distant future dates, leading zeros, negative signs and fractional values can fall outside that pattern. Prefer the source documentation, then verify that the converted date is plausible.
Suspect a factor-of-1,000 mistake first. If a result lands near 1970 or implausibly far in the future, switch between seconds and milliseconds and check again.
A Unix value does not contain a time zone
The value represents an instant relative to UTC, but it does not store a region such as Korea or New York. Displaying 1704067200 in UTC gives midnight on January 1, 2024; displaying the same value in Korea gives 9:00 a.m. that day.
“Convert a timestamp to KST” therefore means showing the same instant on a Korean clock, not moving the event to a different moment. The underlying Unix value remains unchanged.
Fixed offsets and regional zones
Korea Standard Time is currently UTC+09:00 all year. Regions with seasonal changes cannot be handled accurately for all dates by adding one fixed number of hours. Their historical and future rules must be looked up for the date in question.
2024-01-01T09:00:00+09:00. Readers in another region can then identify the same instant.Fractional seconds and precision
Intervals shorter than one second can be written as a fraction. 1704067200.5 seconds is 500 milliseconds after 2024-01-01 00:00:00 UTC. The same value is 1704067200500 milliseconds.
Changing the unit does not make the source measurement more accurate. Multiplying an integer seconds value by 1,000 creates a millisecond-shaped number, but the three new zeros do not prove that the original clock measured milliseconds. Keep measurement precision separate from display unit.
Handling nanoseconds
Nanosecond values are long enough that ordinary number formats can round their final digits. Preserve the original as an integer string when exact comparison matters, and check how many fractional digits remain in the human-readable date.
Negative time and leap seconds
Negative values identify pre-epoch instants
-1 second is 1969-12-31 23:59:59 UTC. In Korea that same instant is already 1970-01-01 08:59:59, so the sign alone does not determine the local calendar year.
Conventional Unix time does not count leap seconds separately
POSIX-style Unix time does not assign an ordinary additional Unix second to the rare UTC display 23:59:60. This distinction matters when treating the subtraction of two timestamps as a very long physical elapsed-time measurement.
The leap-second treatment is described in The Open Group's POSIX time rationale.
What is the Year 2038 problem?
A signed 32-bit integer can store Unix seconds only through 2147483647. That value is 2038-01-19 03:14:07 UTC; one additional second cannot fit in the same signed format.
This does not mean Unix time ends in 2038. It is a storage-width limitation. A wider signed integer can continue representing later dates.
| Unix seconds | UTC | Meaning |
|---|---|---|
2147483646 | 2038-01-19 03:14:06 | Inside signed 32-bit range |
2147483647 | 2038-01-19 03:14:07 | Maximum signed 32-bit value |
2147483648 | 2038-01-19 03:14:08 | Outside signed 32-bit range |
If a file or tool may hold contract dates, birthdays or long-lived schedules after 2038, confirm that it supports a wider range.
Unix time compared with ISO 8601
A Unix value is compact and easy to sort, but people cannot identify its date by sight and may omit its unit. An ISO 8601 date is longer but can include the calendar, clock and UTC offset.
| Representation | Example | Strength | Watch for |
|---|---|---|---|
| Unix seconds | 1704067200 | Compact and sortable | Unit and date are not visible |
| Unix milliseconds | 1704067200000 | Subsecond ordering | Confusing it with seconds changes the date |
| UTC ISO | 2024-01-01T00:00:00Z | Readable with explicit UTC | Syntax must be preserved |
| KST ISO | 2024-01-01T09:00:00+09:00 | Korean clock is immediately visible | An offset is not the same as a named zone |
For an important instant, a safe record includes the UTC ISO form, the original Unix value and its unit: 2024-01-01T00:00:00Z (1704067200 seconds).
A checklist for preventing the wrong date
- Find the numeric unit. Look for s, ms, μs or ns in the source documentation.
- Compare UTC and the intended local zone. Check whether an offset crosses midnight.
- Check the expected digit range. Present-day seconds are usually 10 digits and milliseconds 13.
- Preserve fractions and signs. Removing them identifies a different instant.
- Include a time zone when sharing. Provide a date with Z or a numeric offset.
The result is near 1970
A seconds value may have been read as milliseconds, or vice versa. Switch units and verify again.
The local date differs by a day
A late UTC time may already be the following day in a region east of UTC. Compare year, month and day as well as the clock.
The final digits changed
A long nanosecond value may have lost precision in ordinary numeric notation. Compare it with the original integer string.
Authoritative references and further reading
- The Open Group: POSIX time and leap seconds
- RFC Editor: internet date and time format
- IANA: world time-zone rules
- MDN: representable calendar range
- MDN: UTC ISO string format
Regional time-zone rules can change through government policy. For historical dates or future local schedules, confirm the IANA rule that applies on the relevant date.
Try the concepts in a converter
Timestamp date converter
Detect seconds through nanoseconds and display UTC and KST.
Open tool →Exact unitsUnix unit converter
Calculate four units for the same instant and verify its date.
Open tool →Date formatISO 8601 validator
Validate a string with Z or a numeric offset and convert it to Unix time.
Open tool →Unix timestamp questions
Which time zone does a Unix timestamp use?
The reference is UTC. The number itself does not store a regional time zone; a selected time zone only changes the calendar and clock used to display the instant.
When is Unix time zero?
Unix time zero is 1970-01-01 00:00:00 UTC, which is 1970-01-01 09:00:00 in Korea Standard Time.
Is every 10-digit timestamp measured in seconds?
No. Ten digits is a useful clue for positive seconds near the present, but historical dates, far-future values, leading zeros and signed values can break that pattern.
Does Unix time count leap seconds?
Conventional POSIX Unix time does not count a leap second as a separate numbered second.
Does the Year 2038 problem affect every timestamp?
No. It applies when Unix seconds are stored in a signed 32-bit integer. Wider integer formats can represent dates after 2038.
Should I share a Unix timestamp or ISO 8601 date?
Unix values are compact and sortable, while an ISO 8601 date with an offset is easier for people to interpret. For important events, share both the original Unix value with its unit and a UTC ISO date.