🔧 Operation
📅 Wall-clock date & time
🌍 Source / Target time zones
🌍 Source + Target time zones
The compare API accepts up to 12 target zones; this UI exposes three fixed slots for predictability. Use the API directly for larger batches.
📤 Result
🧭 Conversion detail
- Source (local)
- {{ convertResult.source.isoLocal }} {{ convertResult.source.offset }} ({{ convertResult.source.abbreviation }}{{ convertResult.source.isDst ? ', DST' : '' }})
- Source tz
- {{ convertResult.source.tz }}
- Target (local)
- {{ convertResult.target.isoLocal }} {{ convertResult.target.offset }} ({{ convertResult.target.abbreviation }}{{ convertResult.target.isDst ? ', DST' : '' }})
- Target tz
- {{ convertResult.target.tz }}
- UTC instant
- {{ convertResult.utcIso }}
- Hours difference
- {{ convertResult.hoursDifference }} h (target − source)
🗺️ Same instant in each zone
- UTC instant
- {{ compareResult.utcIso }}
- Source
- {{ compareResult.source.tz }}: {{ compareResult.source.isoLocal }} {{ compareResult.source.offset }}
| Time zone | Local time | Offset | DST | Δh |
|---|---|---|---|---|
| {{ result.tz }} | {{ result.isoLocal }} | {{ result.offset }} | {{ result.isDst ? 'yes' : 'no' }} | {{ result.hoursDifference }} |
ℹ️ About Time Zone Converter
What this tool does
The Time Zone Converter takes a wall-clock date and time in one
IANA time zone and renders the same moment in another. The
algorithm is DST-aware: each conversion reads the current
UTC offset from the IANA tzdata (via the browser's
Intl API or Node's ICU bundle) for the
requested instant, so "14:30 New York" correctly maps
to BST in June and GMT in December.
- Convert — pick a source zone and a target zone, enter a wall clock, get the matching local time in the target zone plus the absolute UTC instant and the signed hour difference.
- Compare — pick a source zone, a wall clock, and up to three target zones; see the same UTC instant rendered side-by-side with each target's offset, abbreviation, and DST status.
How conversion works
JavaScript stores every Date as a UTC instant.
Converting "14:30 in zone X" to UTC therefore requires
knowing the offset zone X observed at that wall clock, which in
turn requires knowing what UTC instant the wall clock referred
to — a chicken-and-egg problem the tool solves by iterating
twice. Treating the wall clock as UTC gives a first guess; the
tzdata-reported offset at that guess corrects the wall clock to
the right side of any DST transition. Two passes are sufficient
for every transition in the IANA database (DST shifts are
always 0–2 hours; offsets are within
[−12, +14] hours).
For wall clocks that fall in a DST "spring forward" gap (e.g. 02:30 on the morning the clocks skip 02:00–03:00), the returned instant is the first valid instant after the gap. This matches the "earlier" disambiguation policy used by the proposed ECMAScript Temporal proposal.
DST detection
For each rendered instant the tool probes the same wall-clock
day in January and July of the same year. If the offsets match,
the zone does not observe DST and isDst is
false. If they differ, the larger-offset half of
the year is the DST window, and isDst is
true iff the active offset matches that larger
value. This is independent of hemisphere: Sydney's AEDT in
January is correctly flagged DST, and EST in December is
correctly flagged standard time.
Worked example
2026-06-15 14:30 in America/New_York is EDT (UTC−04:00). The same moment in Europe/London is BST (UTC+01:00) at 19:30. Both observe DST in mid-June, so the signed difference is exactly +5 hours; the UTC instant is 2026-06-15T18:30:00Z. In December the same wall clock converts to GMT 19:30 because London has reverted to UTC+00:00 while New York is still 5 hours behind.
Use cases
- Scheduling international meetings — find a wall-clock time that works across teams in different DST regions.
- Log analysis — translate a timestamp captured in a server's local time to the operator's home zone.
- Travel planning — see when a flight that departs at local time A arrives at local time B given the destination zone.
- Historical research — render a known UTC instant in the local time it would have been observed at, including DST in effect.
- API integration — call the JSON endpoint from a script and get an identical answer to the page (same compiled logic powers both).
Notes on fractional-hour zones
Some zones use offsets that are not whole hours: India and Sri
Lanka are UTC+05:30, Iran is UTC+03:30, Nepal is UTC+05:45,
Australia/Eucla is UTC+08:45, and Pacific/Chatham is UTC+12:45.
The tool emits the +HH:MM offset verbatim and the
hoursDifference field as a decimal number
(e.g. 5.75 for Kathmandu−UTC).
References
- IANA Time Zone Database — authoritative source for tz names, offsets, and historical DST rules.
- ECMAScript Date/Time and Intl specifications — runtime contract for
Intl.DateTimeFormatwithtimeZone. - ECMAScript Temporal proposal — emerging spec for first-class tz-aware date arithmetic; this tool uses its "earlier" disambiguation policy for DST gaps.
- timeanddate.com DST reference — operator-friendly summary of DST history and rules.
- For ISO timestamps without zone conversion, see the ISO 8601 Formatter.
- For epoch-to-ISO conversion, see the Unix Timestamp Converter.
API Usage Example:
POST /api/tools/time/timezone-converter
Content-Type: application/json
{
"operation": "convert",
"year": 2026,
"month": 6,
"day": 15,
"hour": 14,
"minute": 30,
"fromTz": "America/New_York",
"toTz": "Europe/London"
}