To convert EST to IST, add 10 hours 30 minutes: 09:00 EST is 19:30 IST. While New York is on EDT, from March 8 to November 1 in 2026, add 9 hours 30 minutes: 09:00 EDT is 18:30 IST. India doesn’t change its clocks.
Through 2026
Jan 1 – Mar 8 EST → IST +10:30 09:00 EST is 19:30 IST
Mar 8 – Nov 1 EDT → IST +9:30 09:00 EDT is 18:30 IST
Nov 1 – Dec 31 EST → IST +10:30 09:00 EST is 19:30 IST
A worked conversion
The tool below starts at 09:00 in New York on Thursday, January 15, 2026:
2026-01-15 09:00 America/New_York (UTC-05:00, EST)
2026-01-15 19:30 Asia/Kolkata (UTC+05:30, IST)
When the date flips
From 13:30 EST (14:30 EDT) on, it’s already tomorrow in India: 13:30 EST on January 15 is 00:00 IST on January 16. So “end of day Friday ET”, 17:00 EST on January 16, is 03:30 on Saturday in India, and a reply “by tomorrow morning” can mean two different mornings.
The half hour
India’s offset is UTC+5:30, so conversions land on the half hour: a meeting on the hour in New York is at :30 in India. Code that stores offsets as whole hours, or rounds them, gets India wrong by 30 minutes. Store the zone name, Asia/Kolkata, and let the library work out the offset.
Abbreviation traps
EST is New York’s winter name only; in summer it’s EDT, UTC−4. IST can mean India (UTC+5:30), Israel (UTC+2) or Ireland’s summer time (UTC+1). In code, GNU date with TZ=IST silently prints UTC, and Python’s ZoneInfo("IST") raises ZoneInfoNotFoundError; Asia/Kolkata and America/New_York work everywhere.
In code
from datetime import datetime
from zoneinfo import ZoneInfo
datetime(2026, 7, 15, 9, 0, tzinfo=ZoneInfo("America/New_York")).astimezone(ZoneInfo("Asia/Kolkata")).isoformat()
# '2026-07-15T18:30:00+05:30'
TZ=Asia/Kolkata date -d 'TZ="America/New_York" 2026-01-15 09:00' # GNU date
# Thu Jan 15 19:30:00 IST 2026
new Date('2026-01-15T14:00:00Z').toLocaleString('en-IN', { timeZone: 'Asia/Kolkata', timeZoneName: 'short' })
// '15/1/2026, 7:30:00 pm IST'