IANA timezones, DST, and comparing the same instant
Published: 2026-09-05
Why IANA zone IDs beat fixed UTC offsets, how daylight saving shifts wall clocks, and how to compare one moment across cities without mixing “local time” with the instant itself.
A timezone is not just “UTC+2.” Civil clocks jump for daylight saving, governments rename offsets, and the same numeric offset can mean different places. The practical fix is to store and compare instants (UTC / Unix epoch) and project them into IANA timezone identifiers such as America/New_York or Asia/Tokyo when you need a wall-clock string.
LocalTools’ Timezone converter does that projection in the browser with Intl — no third-party timezone API, same local-only model as other paste tools.
Instant vs wall clock
| Concept | What it is | Example |
|---|---|---|
| Instant | A point on the timeline (UTC) | 2026-09-05T15:00:00.000Z or epoch ms |
| Wall clock | Date/time fields in a zone | 11:00 in New York that same morning |
APIs, logs, and databases should prefer instants (or ISO-8601 with an explicit offset/Z). UIs show wall clocks. Mixing them is the classic bug: “meeting at 3pm” without saying whose 3pm.
JavaScript’s Date stores an instant. Formatting with toLocaleString(..., { timeZone: 'Europe/London' }) (or the converter UI) answers: “what do the clocks say there at this instant?”
Why IANA IDs instead of fixed offsets
IANA Time Zone Database names (also called Olson / tz zones) encode:
- The region’s history of offsets and DST transitions
- A stable ID you can put in config (
TZ=America/Los_Angeles) without hard-coding−07:00/−08:00
A bare offset like UTC−5 does not tell you whether DST applies, when it flips, or which city you meant. America/New_York does (via your OS/browser’s tzdata). Prefer IANA IDs in product settings and only materialize offsets at display time.
Common shapes:
Area/City—Europe/Berlin,Australia/Sydney- Some legacy aliases still appear in older systems; prefer the canonical IANA form your platform documents
Daylight saving (DST) in one paragraph
DST moves the civil clock forward or back so “noon” stays roughly aligned with daylight — but the instant does not jump. At the spring-forward transition, some local clock times do not exist; at fall-back, some local times occur twice. Schedulers that say “every day at 02:30 local” need an explicit policy for those nights.
Abbreviations (EST, EDT, BST, CET) are short labels for an offset at a moment, not unique IDs. CST alone is ambiguous across continents. When debugging, trust the IANA id + numeric UTC offset more than the three-letter abbrev.
Comparing the same instant across cities
Workflow that stays honest:
- Fix one reference instant (UTC epoch,
ZISO string, or “now”). - For each IANA zone, format local date, time, offset, and abbreviation for that same instant.
- Do not add/subtract hours by hand from a sticky “UTC+1” you memorized — especially across DST boundaries.
Example intuition: if the reference is 15:00 UTC, Europe/London might show 16:00 in summer (BST, +01:00) and 15:00 in winter (GMT, +00:00). The converter’s table columns (zone, UTC offset, abbrev, local time) make that comparison visible without leaving your tab.
Browser/Intl caveats worth knowing:
- Zone lists and DST rules come from the ICU/tzdata bundle on the device; older browsers can lag recent government changes.
- For legal “official time” in a jurisdiction, confirm against an authoritative clock source — tools are for engineering clarity, not courtroom proof.
Related tools on LocalTools
- Timezone converter — pick a local reference datetime, add up to several IANA zones, copy comparison rows.
- Unix timestamp converter — inspect epoch seconds/ms as UTC and local.
- ISO 8601 parser — decode calendar/week/ordinal forms that often accompany zone-aware APIs.
- Cron generator — schedules are often written in UTC or a single IANA zone; know which.
Related reading
- Unix timestamps: seconds vs milliseconds — epoch values are instants; display still needs a zone.
- Cron expressions for humans — “09:00 weekdays” only makes sense once you pick UTC vs local.
- Why “local only” matters for developer tools