The Time Zones That Are Not Whole Hours
It is easy to assume every time zone is a whole number of hours ahead or behind. About a fifth of humanity lives in one that is not, and that assumption is worth checking in any code that handles time.
By Nishanth Narayanan · 2026-08-06 · 7 min read
Who is on a fractional offset
The thirty minute offsets are the big ones by population. India and Sri Lanka are UTC+5:30. Iran is UTC+3:30. Afghanistan is UTC+4:30. Myanmar is UTC+6:30. Parts of Australia, including South Australia and the Northern Territory, are UTC+9:30. Newfoundland in Canada is UTC-3:30.
The forty five minute offsets are rarer and stranger. Nepal is UTC+5:45. The Chatham Islands of New Zealand are UTC+12:45. A part of Western Australia around Eucla keeps UTC+8:45 unofficially.
Between India alone and the other thirty minute zones, well over a billion people are on an offset that is not a whole hour.
Why they exist
The honest answer is that a country sets its clock to suit itself, and the sun does not respect hour boundaries.
India settled on a meridian running near Allahabad, which happens to sit five and a half hours from Greenwich. A whole hour offset would have thrown the clock noticeably out of step with daylight at one end of the country or the other, and running two zones across India was rejected because a single national time is administratively simpler and politically safer.
Nepal is a clearer case of identity. It sets its time by the meridian of Kathmandu, fifteen minutes ahead of Indian time. Given the two countries share a long border and a great deal of history, keeping a distinct national time is a deliberate statement as much as a solar calculation.
Newfoundland kept its half hour offset from the era when local time really was set by local noon, and simply never gave it up.
What this breaks
Fractional offsets are the case worth testing for, because the assumptions that hold everywhere else stop holding here.
Code that stores an offset as an integer number of hours. This is the classic. It silently rounds India to UTC+5 or UTC+6 and every conversion is thirty minutes wrong. It usually survives testing, because whoever wrote the tests lives in a whole hour zone.
Interfaces that only let you pick times on the hour. If a booking system offers 09:00, 10:00 and 11:00 in the user's local time and the backend works in whole hour steps, an Indian user can end up unable to express the slot they actually want.
Conversion done by taking the hour and ignoring the minutes. We hit this on this very site. An earlier version of the timezone pair tables anchored itself to "now, rounded down to the hour" and then applied the offset, which produced the right answer for London to New York and the wrong answer for anything involving India. Midnight in Dubai showed as 2am in India rather than 1:30am. Nothing caught it because nothing compared the rendered table against an independent calculation, which is why there is now a test that checks every published pair at every hour in both winter and summer.
Duration arithmetic across a fractional boundary. "Three hours from now" is unambiguous, but "the same time tomorrow" is not, if a daylight saving change falls in between and one side is on a half hour offset.
The forty five minute cases are worse
Nepal at UTC+5:45 and the Chatham Islands at UTC+12:45 break assumptions that even half hour aware code can carry. If a developer has generalised from "offsets can be thirty minutes" to "offsets are multiples of thirty minutes", Kathmandu is still wrong.
The safe assumption is that an offset is a number of minutes, and that the only reliable source for what it is on a given date is the IANA time zone database, which every operating system and browser ships and keeps updated.
How to handle it
Never store an offset as a number. Store the zone identifier, something like Asia/Kolkata or Pacific/Chatham, and let a library resolve the offset for the specific instant you care about. The offset is a result, not an input.
If you are scheduling rather than programming, the practical version is simply to check rather than calculate in your head. Our converter handles fractional offsets correctly, including Nepal and the Chathams, and shows the minutes rather than rounding them away.
Frequently asked questions
Which countries use a forty five minute time zone offset?
Nepal at UTC+5:45 and the Chatham Islands of New Zealand at UTC+12:45 are the main ones. An area around Eucla in Western Australia unofficially keeps UTC+8:45.
Why is India on a half hour offset?
India set a single national time based on a meridian near Allahabad, which sits five and a half hours from UTC. A whole hour offset would have put the clock further out of step with daylight across a very wide country.
What should I check so a conversion handles India correctly?
Make sure offsets are held in minutes rather than whole hours, and that the conversion keeps the minutes instead of anchoring to the hour. Either shortcut is thirty minutes out for India and forty five minutes out for Nepal.
About the author
Nishanth Narayanan builds and maintains GlobalTimeTools from Coimbatore, India. He works with distributed teams across Indian, European and US time zones, which is where most of these questions came from.