UTC to EST: time zone conversion

EST is UTC−5; EDT (Mar–Nov) is UTC−4

To convert UTC to EST, subtract 5 hours: 12:00 UTC is 07:00 EST. That’s the winter rule only. From the second Sunday in March to the first Sunday in November, New York and the rest of the US Eastern time zone keep EDT, UTC−4, and you subtract 4 instead.

Through 2026

Jan 1  – Mar 8    EST  UTC−5    12:00 UTC is 07:00
Mar 8  – Nov 1    EDT  UTC−4    12:00 UTC is 08:00
Nov 1  – Dec 31   EST  UTC−5    12:00 UTC is 07:00

The clocks change at 02:00 local time. On March 8 they jump from 02:00 EST to 03:00 EDT, at 07:00 UTC; on November 1 they fall back from 02:00 EDT to 01:00 EST, at 06:00 UTC. Toronto and Detroit change on the same dates.

A worked conversion

The tool below starts at 12:00 UTC on Thursday, January 15, 2026. Copy times gives:

2026-01-15 12:00 UTC (UTC+00:00, UTC)
2026-01-15 07:00 America/New_York (UTC-05:00, EST)

The same time on July 15, 2026 is 08:00 EDT. Watch the date, too: anything before 05:00 UTC (04:00 in summer) is still the previous evening in New York, so 04:30 UTC on January 15 is 23:30 EST on January 14.

The abbreviation trap

People write “EST” all year when they mean Eastern time. A July invite for “3 PM EST” almost always means 3 PM EDT, which is 19:00 UTC; read literally, it’s 20:00 UTC. Write “ET”, or better, name the zone.

Code takes EST literally. In the tz database, EST is a zone of its own, fixed at UTC−5: right for Panama, Jamaica and Cancún, which keep EST all year, and an hour off for New York in summer. Node.js 22 resolves timeZone: 'EST' to America/Panama:

new Date('2026-07-15T12:00:00Z').toLocaleString('en-US', { timeZone: 'EST', timeZoneName: 'short' })
// '7/15/2026, 7:00:00 AM EST'   New York reads 8:00 AM EDT

The tool below reads a typed EST as America/New_York instead, and its note says when New York is on EDT.

In code

Use America/New_York, which carries the daylight saving rules:

new Date('2026-01-15T12:00:00Z').toLocaleString('en-US', { timeZone: 'America/New_York', timeZoneName: 'short' })
// '1/15/2026, 7:00:00 AM EST'
from datetime import datetime, timezone
from zoneinfo import ZoneInfo

datetime(2026, 7, 15, 12, 0, tzinfo=timezone.utc).astimezone(ZoneInfo("America/New_York")).isoformat()
# '2026-07-15T08:00:00-04:00'
TZ=America/New_York date -d '2026-01-15 12:00 UTC'    # GNU date; gdate on macOS
# Thu Jan 15 07:00:00 EST 2026

Scheduling

A meeting fixed in UTC moves on New York’s clock: a 14:00 UTC standup is 09:00 there in January and 10:00 in July. If it should stay at 09:00 New York time, schedule it in America/New_York and let the calendar work out the UTC time.

Try it in the Time Zone Converter

2026-01-15 12:00 Thursday in UTC (UTC+00:00, UTC)

2026-01-15T12:00:00.000Z · in 15 days

See it in other zones

  • 2026-01-15 07:00Thursday UTC-05:00 EST
10 zones at a time at most.

Runs in your browser. Nothing you enter is sent anywhere.