🌍 World Clock

➕ Add a city

Maximum 12 cities. {{ cities.length }} of 12 selected.

🗺️ Cities

# IANA zone Actions
{{ idx + 1 }} {{ city }}

⏰ Live clocks

{{ row.tz }}
{{ row.isoLocal.split('T')[1] || row.isoLocal }}
{{ row.weekday }}, {{ row.isoLocal.split('T')[0] }}
{{ row.abbreviation }} {{ row.offset }} DST

📝 Summary

{{ primaryOutput }}
⚠️

ℹ️ About World Clock

What this tool does

The World Clock renders the current wall-clock time, GMT offset, time-zone abbreviation, and daylight-saving status for up to 12 cities at once, refreshing once per second. Pick cities from the IANA database (e.g. America/New_York, Asia/Tokyo), re-order them, or remove ones you no longer need.

The same algorithm — render this UTC instant in tz X — is exposed via a JSON API endpoint as a snapshot operation, so integrations (Open Graph cards, dashboards, cron-driven reports) can produce identical output without running JavaScript.

How it works (technical details)

  • Live tick. The browser sets a 1-second setInterval that re-reads new Date() and asks the shared logic module to render that instant in every selected zone. Per-zone formatters are cached, so a 12-city tick is cheap.
  • Wall clock per zone. Each row is built by Intl.DateTimeFormat({ timeZone }) for the target IANA zone. The wall-clock year/month/day are whatever the zone observes at the active UTC instant — a zone that has just crossed midnight shows tomorrow's date, even if your local clock still reads yesterday.
  • Offset. Reported as +HH:MM / -HH:MM. Half-hour (India, Iran, Australia/Adelaide) and quarter-hour (Nepal, Chatham Islands) offsets are emitted verbatim.
  • DST detection. The tool probes January and July of the wall-clock year in the same zone. If offsets match, the zone does not observe DST. 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. Hemisphere-independent — Sydney's AEDT in January is correctly flagged DST, EST in December is correctly flagged standard time.
  • Tab-safe. The 1-second interval pauses automatically when the page is navigated away via Hotwire Turbo, and the listener is detached on unmount. No leaked timers across page navigations.

Use cases

  • Distributed teams — keep the office cities of your collaborators visible at a glance.
  • Trading / markets — track exchange open/close times in NY, London, Tokyo, Hong Kong, Sydney simultaneously.
  • On-call rotation — see who is in working hours right now without doing the offset math in your head.
  • Family abroad — keep a pinned tab with the cities of friends and family for "is it a polite time to call" checks.
  • Programmatic integration — call the snapshot API from a script or scheduled job to produce timezone-aware reports without booting a browser.

Privacy note

The live clocks render entirely in your browser — no network request fires per tick. Only the optional API call sends a request, and it carries just the list of IANA zone names you pass in. No location, device, or identifying data is sent anywhere.

References

API Usage Example:

POST /api/tools/time/world-clock
Content-Type: application/json

{
    "operation": "snapshot",
    "iso": "2026-06-15T12:00:00Z",
    "tzs": [
        "America/New_York",
        "Europe/London",
        "Asia/Tokyo"
    ]
}
Ready