EST to PST: time zone conversion

PST is EST−3, and PDT is EDT−3

To convert EST to PST, subtract 3 hours: 09:00 EST is 06:00 PST. The gap holds all year, because the US moves both coasts to daylight saving on the same dates: in summer, 09:00 EDT is 06:00 PDT.

Through 2026

Jan 1  – Mar 8    EST → PST    UTC−5 → UTC−8    3 hours
Mar 8  – Nov 1    EDT → PDT    UTC−4 → UTC−7    3 hours
Nov 1  – Dec 31   EST → PST    UTC−5 → UTC−8    3 hours

There’s one wrinkle, three hours long, twice a year. Each zone changes at 02:00 on its own clock, so New York changes three hours before Los Angeles. On March 8, from 07:00 to 10:00 UTC, New York is already on EDT and Los Angeles still on PST: 4 hours apart. On November 1, from 06:00 to 09:00 UTC, New York is back on EST and Los Angeles still on PDT: 2 hours apart. Only overnight jobs notice.

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 06:00 America/Los_Angeles (UTC-08:00, PST)

On the night the clocks go back, 01:30 happens twice in New York. The tool takes the first one, on EDT, which is 22:30 PDT on October 31; the second, on EST, is 23:30 PDT.

Abbreviations and zone names

“EST” and “PST” are the winter names. A summer meeting at “1 PM EST” means 1 PM EDT; writing “ET” and “PT” avoids the question. Arizona is the usual surprise: most of the state stays on MST, UTC−7, all year, so in summer it shows the same time as Los Angeles and in winter it’s an hour ahead (America/Phoenix).

In code, use America/New_York and America/Los_Angeles. Node.js 22 also resolves the old POSIX-style names EST5EDT and PST8PDT to those two zones, but a bare EST is fixed at UTC−5 and ignores summer.

In code

from datetime import datetime
from zoneinfo import ZoneInfo

ny, la = ZoneInfo("America/New_York"), ZoneInfo("America/Los_Angeles")
datetime(2026, 1, 15, 9, 0, tzinfo=ny).astimezone(la).isoformat()
# '2026-01-15T06:00:00-08:00'
datetime(2026, 11, 1, 1, 30, fold=1, tzinfo=ny).astimezone(la).isoformat()
# '2026-10-31T23:30:00-07:00'   fold=1 picks the second 01:30
TZ=America/Los_Angeles date -d 'TZ="America/New_York" 2026-01-15 09:00'    # GNU date
# Thu Jan 15 06:00:00 PST 2026
new Date('2026-01-15T14:00:00Z').toLocaleString('en-US', { timeZone: 'America/Los_Angeles', timeZoneName: 'short' })
// '1/15/2026, 6:00:00 AM PST'

JavaScript’s Date can’t parse a wall time in a named zone, so start from the UTC instant, as here.

Meeting window

With working hours of 09:00 to 17:00 on both coasts, the shared hours are 12:00 to 17:00 Eastern, 09:00 to 14:00 Pacific: five hours, all year. A 9 AM Eastern call is 6 AM in California.

Try it in the Time Zone Converter

2026-01-15 09:00 Thursday in America/New_York (UTC-05:00, EST)

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

See it in other zones

  • 2026-01-15 06:00Thursday UTC-08:00 PST
10 zones at a time at most.

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