🌐 Time Zone Converter - IANA tz with DST awareness

🔧 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

{{ primaryOutput }}

🧭 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

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"
}
Ready