CET to EST: time zone conversion

EST is CET−6 (5 hours for 4 weeks a year)

To convert CET to EST, subtract 6 hours: 15:00 CET is 09:00 EST. In summer both sides move forward an hour, so 15:00 CEST is 09:00 EDT, still 6 hours. The exception is the four weeks a year when only one side has changed: the US switches on the second Sunday of March and the first Sunday of November, the EU on the last Sundays of March and October.

Through 2026

Jan 1  – Mar 8    CET  → EST    6 hours
Mar 8  – Mar 29   CET  → EDT    5 hours
Mar 29 – Oct 25   CEST → EDT    6 hours
Oct 25 – Nov 1    CET  → EDT    5 hours
Nov 1  – Dec 31   CET  → EST    6 hours

A worked conversion

The tool below starts at 15:00 in Berlin on Thursday, January 15, 2026:

2026-01-15 15:00 Europe/Berlin (UTC+01:00, CET)
2026-01-15 09:00 America/New_York (UTC-05:00, EST)

Move the date to March 20 and the same 15:00 CET is 10:00 EDT; on October 28 it’s 10:00 EDT again.

Meeting window

With 09:00 to 17:00 on both sides, the overlap is 15:00 to 17:00 in Berlin, 09:00 to 11:00 in New York: two hours. In the 5-hour weeks it grows to three, from 14:00 CET. A weekly call booked in one city’s time moves by an hour in the other for those weeks, so check invites in March and at the end of October.

Abbreviation traps

CET is the winter name. From March 29 to October 25, 2026, Berlin, Paris, Madrid, Rome and Warsaw are on CEST, UTC+2. The UK, Ireland and Portugal aren’t on CET at all, and neither are Greece or Finland, which are an hour ahead of it. EST is New York’s winter name; it’s EDT from March 8 to November 1.

In code, CET is a real tz database name, and unlike EST it does switch to CEST in summer (Node.js 22 resolves it to Europe/Brussels). It works, but name a city, Europe/Berlin or Europe/Paris, so the data follows that country’s rules.

In code

from datetime import datetime
from zoneinfo import ZoneInfo

datetime(2026, 3, 20, 15, 0, tzinfo=ZoneInfo("Europe/Berlin")).astimezone(ZoneInfo("America/New_York")).isoformat()
# '2026-03-20T10:00:00-04:00'
TZ=America/New_York date -d 'TZ="Europe/Berlin" 2026-01-15 15:00'    # GNU date
# Thu Jan 15 09:00:00 EST 2026
new Date('2026-01-15T14:00:00Z').toLocaleString('en-US', { timeZone: 'America/New_York', timeZoneName: 'short' })
// '1/15/2026, 9:00:00 AM EST'

Try it in the Time Zone Converter

2026-01-15 15:00 Thursday in Europe/Berlin (UTC+01:00, CET)

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

See it in other zones

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

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