The one rule that prevents timezone bugs
Store and transmit timestamps in UTC; convert to local time only for display. UTC never observes DST and never changes, so a UTC timestamp is unambiguous regardless of where the user is or what season it is. The moment you store local time, you’ve created a value that’s ambiguous (which “2:30 AM” during the fall-back hour?) and fragile across DST. Convert local → UTC on the way in, UTC → local on the way out. Use a Unix timestamp or an ISO 8601 string with a Z suffix (2026-01-15T14:30:00Z) for maximum portability.
Names, not abbreviations
Timezone abbreviations are a trap because they’re not unique. IST alone could mean Indian (UTC+5:30), Irish (UTC+1), or Israeli (UTC+2) Standard Time. CST spans Central US, China, and Cuba. The fix is IANA identifiers — Asia/Kolkata, Europe/Dublin, America/Chicago — which are globally unambiguous and encode each region’s full DST history. This converter uses IANA names under the hood, which is why it applies the correct offset automatically for the date you enter.
Offset vs timezone
| Concept | Example | Changes with DST? |
|---|---|---|
| UTC offset | UTC+3 | No — it’s a fixed number |
| Timezone | Europe/Istanbul | Yes — offset varies by season |
A timezone is a region with rules; an offset is a fixed shift. Europe/Berlin is UTC+1 in winter and UTC+2 in summer — same timezone, two offsets. Scheduling against an offset (UTC+1) loses the DST rules; scheduling against a timezone keeps them.
Why the date sometimes flips
When it’s 11 PM Monday in New York, it’s already Tuesday afternoon in Tokyo — so a conversion that changes the day is correct, not a bug. Timezones span more than 24 hours end to end (UTC−12 to UTC+14), so crossing the international date line shifts the calendar date. To measure spans between converted times, pair this with the Date Difference Calculator.