To convert UTC to PST, subtract 8 hours: 17:00 UTC is 09:00 PST. From the second Sunday in March to the first Sunday in November, Los Angeles, Seattle and Vancouver are on PDT, UTC−7, so 17:00 UTC is 10:00 PDT.
Through 2026
Jan 1 – Mar 8 PST UTC−8 17:00 UTC is 09:00
Mar 8 – Nov 1 PDT UTC−7 17:00 UTC is 10:00
Nov 1 – Dec 31 PST UTC−8 17:00 UTC is 09:00
The switches happen at 02:00 Pacific time, which is 10:00 UTC on March 8 and 09:00 UTC on November 1.
A worked conversion
The tool below starts at 17:00 UTC on Thursday, January 15, 2026:
2026-01-15 17:00 UTC (UTC+00:00, UTC)
2026-01-15 09:00 America/Los_Angeles (UTC-08:00, PST)
Before 08:00 UTC (07:00 in summer), it’s still the previous day in California: 07:59 UTC on January 15 is 23:59 PST on January 14. A daily report stamped with the UTC date runs a day ahead of the Pacific one for those hours.
What code does with “PST”
The same three letters mean different things to different tools. Node.js 22 reads PST as America/Los_Angeles, daylight saving included:
new Date('2026-07-15T17:00:00Z').toLocaleString('en-US', { timeZone: 'PST', timeZoneName: 'short' })
// '7/15/2026, 10:00:00 AM PDT'
GNU date doesn’t know the name and quietly uses UTC:
TZ=PST date -d '2026-07-15 17:00 UTC'
# Wed Jul 15 17:00:00 PST 2026 wrong: that's UTC
Python’s ZoneInfo("PST") raises ZoneInfoNotFoundError. Only America/Los_Angeles means the same thing everywhere. The tool below reads PST as America/Los_Angeles and says so in a note, which also mentions Philippine Standard Time.
In code
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
datetime(2026, 7, 15, 17, 0, tzinfo=timezone.utc).astimezone(ZoneInfo("America/Los_Angeles")).isoformat()
# '2026-07-15T10:00:00-07:00'
TZ=America/Los_Angeles date -d '2026-01-15 17:00 UTC'
# Thu Jan 15 09:00:00 PST 2026
Scheduling
A job set for 17:00 UTC runs at 09:00 in Los Angeles in winter and 10:00 in summer. To keep 09:00 Pacific all year, schedule it in America/Los_Angeles, or move it to 16:00 UTC while daylight saving is on.