Loading…
--:--:-- --
Asia/Kolkata · IST (UTC+5:30)
Same as IST · Compared to IST (India)

Delhi Time Zone — Asia/Kolkata

IST · UTC+5:30 · No DST

The Asia/Kolkata timezone identifier covers all of India — 28 states, 8 union territories, and over 1.4 billion people on a single UTC+5:30 offset. The IANA tz database chose "Kolkata" (originally "Calcutta") as the representative city under its convention of naming identifiers after the most populous city at the time of creation — Kolkata held that distinction when the Olson database was first compiled in the 1980s. India's +5:30 offset (330 minutes ahead of UTC) is anchored to the 82°30′E meridian, which passes through Mirzapur, Uttar Pradesh — this longitude was chosen in 1906 as the mathematical midpoint between India's eastern extreme (97°E, Arunachal Pradesh) and western extreme (68°E, Kutch, Gujarat). Asia/Kolkata has been permanently fixed at UTC+5:30 since 1945, when WWII-era wartime hours ended, making it one of the world's most stable production timezones: zero DST transitions, zero offset changes since your grandparents were born.

UTC Offset
UTC+5:30
IST Difference
Same as IST
DST
Not observed
Cities in Dataset
7,167
5 countries
Largest: Delhi (32.2M)

Primary City — Delhi

🏙️
Delhi, Delhi, India
Population 32,226,000
Coordinates 28.6100°N, 77.2300°E
Local time now
IST equivalent
Timezone Asia/Kolkata
Capital status admin

All Cities in Asia/Kolkata 7,167

Showing top 100 cities by population. Use the filter to search all 7,167 cities.

# City State / Province Country Population Capital
1 Delhi Delhi India 32.2M admin
2 Mumbai Mahārāshtra India 25.0M admin
3 Kolkāta West Bengal India 21.7M admin
4 Bangalore Karnātaka India 15.4M admin
5 Chennai Tamil Nādu India 12.4M admin
6 Hyderābād Telangāna India 10.5M admin
7 Pune Mahārāshtra India 8.2M
8 Ahmedabad Gujarāt India 8.0M minor
9 Sūrat Gujarāt India 6.5M
10 Prayagraj Uttar Pradesh India 6.0M
11 Belāhi Bihār India 4.5M
12 Nādampālaiyam Tamil Nādu India 3.5M
13 Lucknow Uttar Pradesh India 3.4M admin
14 Kannankulam Kerala India 3.2M
15 Jaipur Rājasthān India 3.1M admin
16 Kottārasshēri Kerala India 3.0M
17 Attadappa Kerala India 2.6M
18 Barmhān Kalān Madhya Pradesh India 2.5M
19 Mirzāpur Uttar Pradesh India 2.5M
20 Nāgpur Mahārāshtra India 2.4M
21 Ghāziābād Uttar Pradesh India 2.4M
22 Supaul Bihār India 2.2M
23 Vadodara Gujarāt India 2.1M
24 Rājkot Gujarāt India 2.0M
25 Vishākhapatnam Andhra Pradesh India 2.0M
26 Indore Madhya Pradesh India 2.0M
27 Thāne Mahārāshtra India 1.9M
28 Bhopāl Madhya Pradesh India 1.8M admin
29 Āgra Uttar Pradesh India 1.8M
30 Peyanvilai Tamil Nādu India 1.8M
31 Pimpri-Chinchwad Mahārāshtra India 1.7M
32 Patna Bihār India 1.7M admin
33 Bilāspur Chhattīsgarh India 1.6M
34 Ludhiāna Punjab India 1.6M
35 Madurai Tamil Nādu India 1.6M minor
36 Jamshedpur Jhārkhand India 1.6M
37 Nāsik Mahārāshtra India 1.5M
38 Vijayavāda Andhra Pradesh India 1.5M
39 Farīdābād Haryāna India 1.4M
40 Najafgarh Delhi India 1.4M
41 Meerut Uttar Pradesh India 1.3M
42 Jabalpur Madhya Pradesh India 1.3M
43 Kalyān Mahārāshtra India 1.2M
44 Vasai-Virar Mahārāshtra India 1.2M
45 Pānīpat Haryāna India 1.2M
46 Vārānasi Uttar Pradesh India 1.2M
47 Kalleli Kerala India 1.2M
48 Srīnagar Jammu and Kashmīr India 1.2M admin
49 Aurangābād Mahārāshtra India 1.2M
50 Dhanbād Jhārkhand India 1.2M
51 Amritsar Punjab India 1.1M
52 Alīgarh Uttar Pradesh India 1.1M
53 Guwāhāti Assam India 1.1M
54 Hāora West Bengal India 1.1M
55 Rānchi Jhārkhand India 1.1M admin
56 Gwalior Madhya Pradesh India 1.1M
57 Chandīgarh India 1.1M admin
58 Jodhpur Rājasthān India 1.0M
59 Raipur Chhattīsgarh India 1.0M admin
60 Kota Rājasthān India 1.0M
61 Bareilly Uttar Pradesh India 1.0M
62 Coimbatore Tamil Nādu India 960K
63 Solāpur Mahārāshtra India 952K
64 Hubli Karnātaka India 944K
65 Mysore Karnātaka India 921K
66 Trichinopoly Tamil Nādu India 917K
67 Morādābād Uttar Pradesh India 890K
68 Tiruppūr Tamil Nādu India 878K
69 Gurgaon Haryāna India 877K
70 Jalandhar Punjab India 874K
71 Bhubaneshwar Odisha India 838K admin
72 Narela Delhi India 810K
73 Bhayandar Mahārāshtra India 809K
74 Karīmnagar Andhra Pradesh India 797K
75 Patiāla Punjab India 763K
76 Shīshgarh Uttar Pradesh India 754K
77 Colombo Western Sri Lanka 753K primary
78 Thiruvananthapuram Kerala India 744K admin
79 Durgāpur West Bengal India 726K
80 Bhiwandi Mahārāshtra India 710K
81 Bhīlwāra Rājasthān India 709K
82 Sahāranpur Uttar Pradesh India 705K
83 Warangal Andhra Pradesh India 705K
84 Shiliguri West Bengal India 701K
85 Salem Tamil Nādu India 693K
86 Kochi Kerala India 677K
87 Gorakhpur Uttar Pradesh India 673K
88 Guntūr Andhra Pradesh India 670K
89 Karaikandi Assam India 659K
90 Haldwāni Uttarākhand India 656K
91 Dhūlia Mahārāshtra India 656K
92 Bhāvnagar Gujarāt India 643K
93 Noida Uttar Pradesh India 637K
94 Bhāngar West Bengal India 634K
95 Bhilai Chhattīsgarh India 625K
96 Mangalore Karnātaka India 624K
97 Bihtā Bihār India 617K
98 Hasanpur Uttar Pradesh India 612K
99 Cuttack Odisha India 606K
100 Salīmpur Uttar Pradesh India 604K

IST Conversion — IST ↔ IST Quick Reference

Based on current offset (UTC+5:30). Fixed year-round — no DST adjustment needed.

Local Time (IST) IST (India)
12:00 AM 12:00 AM
6:00 AM 6:00 AM
9:00 AM 9:00 AM
12:00 PM 12:00 PM
5:00 PM 5:00 PM
9:00 PM 9:00 PM

Why Is the IANA Identifier "Asia/Kolkata" — Not "Asia/India" or "Asia/Delhi"?

The IANA timezone database (the Olson/tz database) follows one strict rule: each timezone identifier is anchored to the most populous city in the timezone at the time the identifier was created, never the national capital. When the tz database was first compiled in the 1980s, Kolkata (then Calcutta) was India's largest city by population. Delhi and Mumbai have since grown larger — but IANA only renames identifiers for compelling reasons, and population shifts don't qualify.

There is no "Asia/India" because timezone IDs must refer to cities, not countries. Country-named identifiers would collide when a nation has multiple timezones (the USA has six) and would invite political disputes. The identifier was Asia/Calcutta until 1993, when it was renamed to Asia/Kolkata following India's official city renaming. The old name remains as a deprecated backward-compatibility alias and still works on all modern systems.

Asia/Kolkata vs IST — Machine Identifier vs Human Abbreviation

Both refer to UTC+5:30, but they serve different audiences. Use Asia/Kolkata in code; use "IST" only in human-facing text where context is unambiguous.

PropertyAsia/KolkataIST
TypeIANA identifier — machine-readableAbbreviation — human-readable
UniquenessGlobally unique in the tz databaseAmbiguous — 3 timezones share "IST"
Other "IST" zonesIsrael Standard Time (UTC+2), Irish Standard Time (UTC+1)
In JavaScript{timeZone:'Asia/Kolkata'} — works in all JS engines{timeZone:'IST'} — rejected or misidentified
UTC offsetUTC+5:30 (fixed)UTC+5:30
DSTNot observed since 1945Not observed

⚠️ Never use IST in timezone config files, databases, or API payloads. Always use Asia/Kolkata.

UTC+5:30 History — How India's Offset Evolved Since 1880

Before British colonial standardisation, every Indian city observed its own local mean solar time based on the sun's position overhead. The journey to today's fixed UTC+5:30 passed through several distinct phases:

PeriodOffsetNotes
Before 1880Local mean timeBombay: UTC+4:51 · Madras: UTC+5:20:41 · Calcutta: UTC+5:53:20. Each city based on local sun position.
1880–1905Multiple local timesMadras time used on the Great Indian Peninsula Railway. Calcutta and Bombay kept own civic times.
1 Jan 1906UTC+5:30 — IST establishedStandardised on 82°30′E meridian (Mirzapur, UP). Chosen as midpoint between India's eastern (97°E) and western (68°E) extremes.
1941–1945 (WWII)UTC+6:30 — "War Time"Clocks advanced 1 hour for wartime fuel conservation and alignment with Eastern theatre operations.
15 Aug 1945UTC+5:30 — restoredReverted to IST after Japan's surrender. This was the last time India ever used any form of DST.
15 Aug 1947+UTC+5:30 — unchangedIndependent India retained IST. No change since, despite several government proposals over the decades.

Asia/Calcutta → Asia/Kolkata: The 1993 Deprecation

In 1993, the IANA tz database renamed Asia/Calcutta to Asia/Kolkata following India's official city renaming. The original identifier remains in the database as a deprecated backward-compatibility link — it silently maps to Asia/Kolkata on all modern operating systems so that legacy code does not break.

⚠️ Developer action: If your codebase, database schema, or CI configuration contains Asia/Calcutta, it still works today — but it is officially deprecated. Search your repositories for Asia/Calcutta and replace with Asia/Kolkata. Verify with: zdump Asia/Calcutta — output will be identical to zdump Asia/Kolkata.

What Countries Use UTC+5:30?

Only two sovereign countries permanently observe UTC+5:30:

  • India — all 28 states and 8 union territories, 1.4 billion people. Official name: Indian Standard Time (IST). Fixed year-round since 1945.
  • Sri Lanka — ~22 million people. Official name: Sri Lanka Standard Time (SLST). Sri Lanka briefly used UTC+6:30 and UTC+6 between 1996 and 2006 but has been stably at UTC+5:30 since May 2006.

Close neighbours — but not UTC+5:30:

  • Nepal — UTC+5:45 (Nepal Standard Time). The extra 15 minutes are Nepal's deliberate differentiation from India.
  • Pakistan — UTC+5 (Pakistan Standard Time, PKT). 30 minutes behind IST.
  • Bangladesh — UTC+6 (Bangladesh Standard Time, BST). 30 minutes ahead of IST.
  • Maldives — UTC+5 (Maldives Time, MVT).

Developer Guide — Asia/Kolkata is DST-Free

Asia/Kolkata has zero DST transitions since 1945. Unlike America/New_York or Europe/London, which shift UTC offset twice per year, Asia/Kolkata is permanently fixed. This dramatically simplifies date arithmetic — but one mistake is common:

Hardcoding +05:30 is fragile

The offset +05:30 happens to be correct today, but hardcoding an offset string instead of the IANA identifier is bad practice. It breaks pre-1945 historical queries, is not a valid timeZone argument in most engines, and fails to communicate intent to future readers of your code.

// ❌ Fragile — raw offset not valid in Intl API
new Date().toLocaleString('en-IN', { timeZone: '+05:30' });

// ✅ Correct — IANA identifier
new Date().toLocaleString('en-IN', { timeZone: 'Asia/Kolkata' });

What zdump shows

On Linux/macOS, zdump -v Asia/Kolkata | tail -5 shows the last recorded transition was 6 September 1945. After that: no transitions. The timezone data is a flat line from 1945 to the end of the IANA database.

Code Snippets: Asia/Kolkata in 7 Languages

JavaScript / Node.js
const fmt = new Intl.DateTimeFormat('en-IN', {
  timeZone: 'Asia/Kolkata',
  dateStyle: 'medium',
  timeStyle: 'long'
});
console.log(fmt.format(new Date()));
Python — pytz
import pytz
from datetime import datetime

ist = pytz.timezone('Asia/Kolkata')
now = datetime.now(ist)
print(now.strftime('%Y-%m-%d %H:%M:%S %Z'))
Python — zoneinfo (3.9+)
from zoneinfo import ZoneInfo
from datetime import datetime

now = datetime.now(ZoneInfo('Asia/Kolkata'))
print(now)  # 2026-03-20 14:30:00+05:30
Java (java.time)
import java.time.*;

ZoneId kolkata = ZoneId.of("Asia/Kolkata");
ZonedDateTime now = ZonedDateTime.now(kolkata);
// 2026-03-20T14:30:00+05:30[Asia/Kolkata]
Go
loc, _ := time.LoadLocation("Asia/Kolkata")
now := time.Now().In(loc)
fmt.Println(now.Format(time.RFC3339))
// 2026-03-20T14:30:00+05:30
PostgreSQL
-- Convert stored UTC timestamp to IST
SELECT created_at AT TIME ZONE 'Asia/Kolkata'
FROM orders;

-- Current IST time
SELECT NOW() AT TIME ZONE 'Asia/Kolkata';
PHP
$tz  = new DateTimeZone('Asia/Kolkata');
$now = new DateTime('now', $tz);
echo $now->format('Y-m-d H:i:s P');
// 2026-03-20 14:30:00 +05:30
Bash
TZ='Asia/Kolkata' date
# Fri Mar 20 14:30:00 IST 2026

# Permanent for session:
export TZ='Asia/Kolkata'

The 82°30′E Meridian — Why India's Timezone Is UTC+5:30, Not UTC+5 or UTC+6

Indian Standard Time is anchored to the 82°30′E meridian. The math is direct: longitude ÷ 15 = UTC offset in hours. 82.5°E ÷ 15 = 5.5 hours = UTC+5:30. The +5:30 offset was not a political compromise — it was the straightforward solar-time calculation for the chosen meridian.

The 82.5°E line was chosen in 1906 as the mathematical midpoint between India's western extreme (~68°E, Kutch, Gujarat) and eastern extreme (~97°E, Arunachal Pradesh–Myanmar border). This meridian physically passes through Mirzapur, Uttar Pradesh — a mid-sized city on the Ganges with no special significance beyond lying on this line. You may see IST described as "Mirzapur time" in older documents for this reason.

India spans 30 degrees of longitude — about 2 hours of solar time. The sun rises roughly 1 hour earlier in Agartala (Tripura, 91°E) than in Ahmedabad (Gujarat, 72°E), yet both cities use the same clock. In parts of Arunachal Pradesh the sun rises before 4 AM by clock time in summer — a regularly cited argument for a northeast India timezone (UTC+6:30). As of 2026, no second Indian timezone has been enacted.