To convert JST to EST, subtract 14 hours: 09:00 JST is 19:00 EST the day before. From the second Sunday in March to the first Sunday in November, New York is on EDT and the gap is 13 hours: 09:00 JST is 20:00 EDT the day before. Japan hasn’t used daylight saving since 1951, so only New York’s changes move the gap.
Through 2026
Jan 1 – Mar 8 JST → EST UTC+9 → UTC−5 14 hours
Mar 8 – Nov 1 JST → EDT UTC+9 → UTC−4 13 hours
Nov 1 – Dec 31 JST → EST UTC+9 → UTC−5 14 hours
A worked conversion
The tool below starts at 09:00 in Tokyo on Thursday, January 15, 2026, and marks New York’s row previous day:
2026-01-15 09:00 Asia/Tokyo (UTC+09:00, JST)
2026-01-14 19:00 America/New_York (UTC-05:00, EST)
Only Tokyo times from 14:00 JST on (13:00 in summer) fall on the same date in New York; anything earlier is still yesterday there.
Meeting window
Two 09:00–17:00 days don’t overlap at all. The usual compromise is New York’s evening and Tokyo’s next morning: 19:00 EST is 09:00 JST, and in summer 20:00 EDT is 09:00 JST. The other option, 08:00 in New York, is 22:00 in Tokyo in winter and 21:00 in summer. Monday morning in Tokyo is Sunday evening in New York, so a weekly meeting set for a Tokyo Monday lands on the American weekend.
Abbreviation traps
JST is clear to people, but software doesn’t agree on it as a zone name. Node.js 22 reads timeZone: 'JST' as Asia/Tokyo, Python’s ZoneInfo("JST") raises ZoneInfoNotFoundError, and GNU date with TZ=JST prints UTC under a JST label. EST is New York’s winter name; it’s EDT in summer. Use Asia/Tokyo and America/New_York.
In code
from datetime import datetime
from zoneinfo import ZoneInfo
datetime(2026, 7, 15, 9, 0, tzinfo=ZoneInfo("Asia/Tokyo")).astimezone(ZoneInfo("America/New_York")).isoformat()
# '2026-07-14T20:00:00-04:00'
TZ=America/New_York date -d 'TZ="Asia/Tokyo" 2026-01-15 09:00' # GNU date
# Wed Jan 14 19:00:00 EST 2026
new Date('2026-01-15T00:00:00Z').toLocaleString('en-US', { timeZone: 'America/New_York', timeZoneName: 'short' })
// '1/14/2026, 7:00:00 PM EST'