Fractional time zones exist because clocks were originally set to local solar time, which changes continuously with longitude, and when nations later adopted a single standard time they anchored it to whatever meridian best fit their geography — which frequently landed on a half-hour or quarter-hour boundary instead of a whole hour. India runs at UTC+5:30 because its chosen 82.5°E meridian works out to exactly 5.5 hours ahead of UTC. Nepal sits 15 minutes further at UTC+5:45 to match the longitude of a Himalayan peak near Kathmandu. Newfoundland is UTC-3:30, Iran is UTC+3:30, Afghanistan is UTC+4:30, and Myanmar is UTC+6:30. These are not glitches; they are deliberate choices that together govern the clocks of well over a billion people.
That is the summary an AI Overview will give you. What it can't show you is the developer's field guide underneath: exactly which places use which fractional offset, why the 45-minute zones exist, and the specific code assumptions that quietly break when a UTC offset isn't a whole number of hours. The number line below and the reference table are the parts you actually need at 2 a.m. when a scheduler fires 30 minutes early in Adelaide.
A number line of the odd offsets
Whole-hour offsets sit on the tidy grid most code assumes. The fractional zones fall in between — and once you see them plotted, the "offsets are integers" bug becomes obvious.
Notice how Nepal at +5:45 sits three-quarters of the way between +5 and +6. That single marker is the reason a UTC offset must be represented in minutes, never hours.
Every fractional offset, and where it applies
This is the reference table. Bookmark it; it is faster than re-deriving the meridian math each time.
| UTC offset | Places | DST behavior | Notes |
|---|---|---|---|
| UTC-9:30 | Marquesas Islands (French Polynesia) | No DST | Rare western half-hour zone |
| UTC-3:30 | Newfoundland & southeast Labrador, Canada | Shifts full hour (to -2:30) | The classic North American oddity |
| UTC+3:30 | Iran | No DST since 2022 | Was +4:30 in summer before abolition |
| UTC+4:30 | Afghanistan | No DST | Fixed year-round |
| UTC+5:30 | India, Sri Lanka | No DST | ~1.4B people; the big one |
| UTC+5:45 | Nepal | No DST | Only nation on a 45-minute standard time |
| UTC+6:30 | Myanmar, Cocos (Keeling) Islands | No DST | Two unrelated territories share it |
| UTC+8:45 | Eucla region, Western Australia | No DST | Unofficial, ~200 residents |
| UTC+9:30 | South Australia, Northern Territory | SA shifts to +10:30; NT stays | Adelaide vs. Darwin diverge in summer |
| UTC+10:30 | Lord Howe Island, Australia | Shifts only 30 min (to +11:00) | The only 30-minute DST jump anywhere |
| UTC+12:45 | Chatham Islands, New Zealand | Shifts to +13:45 | Most extreme quarter-hour offset |
The row that trips up the most code is Lord Howe Island: it is the single place on Earth where daylight saving moves the clock by 30 minutes rather than a full hour. Any DST logic that assumes a one-hour spring-forward is wrong there.
Why the odd offsets exist at all
Before railways and telegraphs, every town kept its own local mean time — noon was when the sun crossed the local meridian. Because the Earth turns 360° in 24 hours, every degree of longitude is worth four minutes of clock time. When standardized time zones arrived, the goal was to pick one clock per region that stayed reasonably close to that local solar time.
Countries that span a lot of longitude faced a choice: split into multiple whole-hour zones, or adopt a single national time on a compromise meridian. India chose one zone anchored at 82.5°E, which is exactly +5:30. China famously chose the opposite extreme — a single UTC+8 for a country that geographically spans five hours of sun — which is why sunrise in western Xinjiang can come after 10 a.m. on the clock.
The 45-minute zones are pure geography plus politics. Nepal's +5:45 tracks the meridian near Kathmandu and also asserts that Nepal is not simply on Indian time. The Chatham Islands' +12:45 reflects their real longitude east of mainland New Zealand. None of these are arbitrary; each is a rational answer to "what clock keeps our working day aligned with our sun?"
What this means for your code
Fractional offsets are where naive time handling goes to die. The failure modes are specific and repeatable.
Three concrete rules keep you safe:
- Store instants as UTC, not local time. A Unix timestamp has no offset ambiguity. Convert to local only at display time.
- Store zones as IANA names, not numbers.
"Asia/Kathmandu"carries +5:45 and every historical change;+5.75carries a landmine. Never round an offset to the nearest hour. - Serialize offsets in ISO 8601
±HH:MM. The format has always supported minutes —2026-07-18T12:00:00+05:45is valid and unambiguous. Anything that stores only+05is lossy.
You can sanity-check any of this against real clocks with our world clock tool, which reads offsets straight from the IANA database so Kathmandu and Chatham show their true fractional times.
The bottom line
Half-hour and quarter-hour offsets aren't exotic edge cases you can ignore — India alone puts 1.4 billion people on a non-whole-hour clock. Treat every offset as a number of minutes, delegate the arithmetic to a time zone library backed by the IANA database, and the entire class of "off by 30 or 45 minutes" bugs disappears. The zones are strange; handling them correctly is not.