# ISO 8601

Canonical URL: https://offlineutils.com/glossary/iso-8601
Also known as: ISO 8601 date format, ISO date, RFC 3339
Published: 2026-06-24
Updated: 2026-08-02
Publisher: offlineutils.com

> ISO 8601 is the international standard for writing dates and times as text — 2026-08-03T14:30:00Z — ordering every field from largest to smallest so the result is unambiguous worldwide and sorts correctly as a plain string.

The standard fixes the one thing local date formats cannot agree on: order. 03/08/2026 is 3 August to most of the world and 8 March in the United States, and no amount of context makes that safe. ISO 8601 writes year, then month, then day, then hour, minute, second — big-endian throughout — which has the useful side effect that sorting the strings alphabetically also sorts them chronologically. No parsing required to order a log file.

A full timestamp is a date, the letter T, a time, and an offset: 2026-08-03T14:30:00+02:00. 'Z' — Zulu — is shorthand for a +00:00 offset, meaning UTC. That trailing offset is the part people drop, and dropping it is what turns a timestamp into a guess: 2026-08-03T14:30:00 with no offset is a wall-clock reading with no instant attached, and different parsers will assume different things about it. Always include the offset.

An offset is also not a time zone. +02:00 tells you the arithmetic, not the location or the rules, so it cannot tell you what the offset will be six months later when daylight saving has shifted. If a future event needs to survive a DST change, store the IANA zone name — Europe/Berlin — alongside the timestamp.

In practice most APIs implement RFC 3339, a tightened internet profile of ISO 8601 that requires a 4-digit year, the separators, and an offset. The two overlap heavily but neither strictly contains the other: RFC 3339 permits '-00:00' for an unknown local offset, which ISO 8601 does not, while ISO 8601 allows plenty RFC 3339 omits — week dates (2026-W31-1), ordinal dates (2026-215), durations (P3Y6M4D), intervals, and a separator-free basic format (20260803T143000Z). Interoperate on the RFC 3339 subset and you will rarely be surprised.

## Frequently asked questions

### What does the T and the Z mean in an ISO 8601 timestamp?

The T is a delimiter marking where the date ends and the time begins — it carries no meaning beyond that. The Z, spoken as 'Zulu', is shorthand for a zero UTC offset, so 2026-08-03T14:30:00Z is 14:30 UTC. Writing '+00:00' instead is equivalent.

### What is the difference between ISO 8601 and RFC 3339?

RFC 3339 is a stricter profile of ISO 8601 aimed at internet timestamps: it requires a 4-digit year, the hyphens and colons, and a UTC offset. Neither is a strict subset of the other — RFC 3339 allows '-00:00' to signal an unknown local offset, which ISO 8601 forbids, while ISO 8601 additionally covers week dates, ordinal dates, durations, intervals, and a compact separator-free form. Most APIs mean RFC 3339 when they say ISO 8601.

### Why should ISO 8601 timestamps always include an offset?

Without one you have a wall-clock reading, not an instant. 2026-08-03T14:30:00 could be any of dozens of moments depending on where it was written, and parsers disagree about the default: some assume UTC, some assume the machine's local zone. That disagreement is a whole class of off-by-hours bugs, and adding 'Z' or the real offset eliminates it.

### Is a UTC offset the same as a time zone?

No. An offset like +02:00 is a fixed arithmetic difference at one moment; a time zone such as Europe/Berlin is a named set of rules covering historical changes and daylight saving. Berlin is +01:00 in winter and +02:00 in summer, so an offset alone cannot tell you what a future date's offset will be. For events scheduled ahead, store the IANA zone name too.

### Why do ISO 8601 strings sort correctly as text?

Because every field runs from most to least significant and is zero-padded to a fixed width, so lexicographic order matches chronological order. That is why the format is so common in filenames, log lines, and database keys — you get chronological sorting for free from a plain string sort, provided all the values share the same offset.

## Related tools

- https://offlineutils.com/timestamp-converter
- https://offlineutils.com/json-formatter

## References

- https://en.wikipedia.org/wiki/ISO_8601
- https://www.iso.org/iso-8601-date-and-time-format.html
- https://datatracker.ietf.org/doc/html/rfc3339
