To convert UTC to IST, add 5 hours 30 minutes: 12:00 UTC is 17:30 IST. India has one time zone and no daylight saving, so the conversion is the same on every date of the year: 12:00 UTC is 17:30 IST in July too.
A worked conversion
The tool below starts at 12:00 UTC on Thursday, January 15, 2026:
2026-01-15 12:00 UTC (UTC+00:00, UTC)
2026-01-15 17:30 Asia/Kolkata (UTC+05:30, IST)
Keep the minutes when you do it by hand. Midnight UTC is 05:30 in India, and from 18:30 UTC on it’s already the next day: 18:30 UTC on January 15 is 00:00 IST on January 16.
Which IST?
IST names three different zones:
India Standard Time UTC+5:30 all year Asia/Kolkata
Israel Standard Time UTC+2, IDT UTC+3 in summer Asia/Jerusalem
Irish Standard Time UTC+1, Ireland's summer Europe/Dublin
Ireland’s IST is its summer time; in winter Dublin is on GMT. If a message from Europe says IST in July, check which one it means.
Software guesses differently, too. Node.js 22 reads timeZone: 'IST' as India; Python’s ZoneInfo("IST") raises ZoneInfoNotFoundError; GNU date doesn’t know the name and prints UTC with an IST label:
TZ=IST date -d '2026-01-15 12:00 UTC'
# Thu Jan 15 12:00:00 IST 2026 wrong: that's UTC
TZ=Asia/Kolkata date -d '2026-01-15 12:00 UTC'
# Thu Jan 15 17:30:00 IST 2026
The tool below reads IST as Asia/Kolkata and names the other two in a note.
In code
Use Asia/Kolkata. The older name Asia/Calcutta still works as an alias, and Node.js 22 even reports Asia/Kolkata back as Asia/Calcutta from resolvedOptions().timeZone, so don’t compare zone names as strings.
new Date('2026-01-15T12:00:00Z').toLocaleString('en-IN', { timeZone: 'Asia/Kolkata', timeZoneName: 'short' })
// '15/1/2026, 5:30:00 pm IST'
With 'en-US' the same call ends in GMT+5:30 instead of IST: the label comes from the locale’s data, not the zone.
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
datetime(2026, 1, 15, 12, 0, tzinfo=timezone.utc).astimezone(ZoneInfo("Asia/Kolkata")).isoformat()
# '2026-01-15T17:30:00+05:30'
Working hours
An Indian working day of 09:00 to 18:00 IST runs from 03:30 to 12:30 UTC, all year. A daily job at 00:00 UTC runs at 05:30 in India, before the day starts.