Timezone and India

Why is there no IST timezone?

Typical software libraries have timezone modules that allow you to pick timezones to display data in. The format used is from a TZ Database, a collaborative compilation that is backed by ICANN. This collection of timezones is known as tzdata, zoneinfo database or IANA timezone database.

Now I have always wondered why there is no IST in this database. India, the second largest set of people looking at clocks have to find their timezone on this database using the setting of “Asia/Kolkata”. I mean when you look into the database for the word India you find all these hits.

America/Indiana/Indianapolis
America/Indiana/Knox
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Tell_City
America/Indiana/Vevay
America/Indiana/Vincennes
America/Indiana/Winamac
America/Indianapolis
Indian/Antananarivo
Indian/Chagos
Indian/Christmas
Indian/Cocos
Indian/Comoro
Indian/Kerguelen
Indian/Mahe
Indian/Maldives
Indian/Mauritius
Indian/Mayotte
Indian/Reunion
US/East-Indiana
US/Indiana-Starke

Then I looked up various other countries Singapore - Asia/Singapore , Sri Lanka Asia/Colombo. Pakistan - Asia/Karachi. So it seems that there is no standard way to name these states - Colombo (city) for Sri Lanka, Karachi (City) for Pakistan, Singapore for Singapore.

The Wikipedia article says that the naming convention is “Area/Location”. Further it claims “Country names are not used in this scheme for location, primarily because they would not be robust, owing to frequent political and boundary changes.” That doesnt explain Singapore and a bunch of other names in the tzdatabase. I see entries such as America/Indiana/Indianapolis that is breaking format.

The explanation on Wikipedia for India’s timezone is that the name of city with the largest population (Kolkata) was chosen.

Looks like the adage is true The two hardest things in computer science is cache invalidation and naming things !

This is the python snippet I used to get to research all the names.

import pytz

for tz in pytz.all_timezones:
    if 'india' in tz.lower():
        print(tz)
updatedupdated2021-06-202021-06-20