Skip to main content
F01

Time zones

One moment across several cities, with date rollover and DST flags, from the browser tz data.

HOW IT WORKS

No zone table is bundled here. Every offset is read back from the browser: the same instant is formatted into the target zone, and the returned wall clock read as if it were UTC gives the offset by subtraction. The IANA database changes several times a year, so a bundled table rots while the browser’s own updates with the browser. The trade is that the answer depends on how old that browser is.

The other direction is the hard one. There is no API for "what instant is 14:30 local", so the tool guesses and verifies: convert with the offset at the naive instant, then format the candidate back and check it really is the wall clock you asked for. Two hours a year fail that check — the hour skipped when clocks jump forward does not exist, and the hour repeated when they go back happens twice. Rather than silently picking one, the page labels it, because that ambiguity is exactly why a meeting sometimes moves by an hour on its own.

Nothing exposes a DST flag, so it is inferred: compare January and July of the same year, take the smaller offset as standard time, and anything larger is summer time. That reads correctly in both hemispheres, and a zone that never shifts has January equal to July and is never flagged. The date-shift column works the same way — civil dates converted to day numbers and subtracted, so a −1 really does mean the other person is still on yesterday.

Half-hour and quarter-hour zones are not edge cases: India at +05:30, Nepal +05:45, South Australia +09:30, the Chathams +12:45. Offsets are held in minutes and shown as ±HH:MM, so none of them get rounded to the nearest hour — the kind of error that makes someone fifteen minutes late to a call.

LIMITS

  • Modern dates only. Before about 1970 many places kept local mean time on non-integer offsets, which are rounded to the minute here. Historical instants need a dedicated database.
  • The upcoming-changes table scans 400 days and reports only the first change per zone. It cannot predict rule changes that have not been published; those arrive with a browser update.
  • To find hours that suit everyone, use F07, which overlays working hours. For working days between two dates, use F02.