Understanding San Francisco Time: What Actually Matters
San Francisco runs on Pacific Time, which is UTC-8 during standard time and UTC-7 during daylight saving time. That's the basic fact. The part that actually trips people up is the transition period and how it intersects with work schedules, especially if you're coordinating across multiple zones. I've spent years scheduling cross-coast calls and deploying systems that depend on accurate timestamping, and the thing nobody warns you about is how much friction Daylight Saving Time creates in practice. It's not just a two-hour shift in March and November. The mismatch between when California changes clocks and when the rest of the world expects things to line up causes real problems. Here's what I learned the hard way. I was running a deployment pipeline for a SaaS product that pulled user activity data from three regional servers. The Pacific server would log events in PST, but during the spring forward transition, the timestamps would briefly overlap or skip depending on how the ingestion service handled the gap. We lost about forty-seven minutes of event data one particular March because our ETL job assumed a continuous 24-hour window. The fix was straightforward once we found it: switch all logging to UTC internally and only convert to local time at the presentation layer. It added roughly twenty minutes of development time upfront but eliminated an entire class of edge-case bugs.
How Pacific Time Actually Works
Pacific Standard Time (PST) is UTC-8. Pacific Daylight Time (PDT) is UTC-7. California observes DST, starting on the second Sunday in March and ending on the first Sunday in November. Most of Arizona does not. That means for about seven months of the year, there's a two-hour difference between Phoenix and San Francisco instead of the usual one-hour gap. If you're building anything that involves scheduling, logging, or user-facing timestamps, here's the practical approach I recommend. Store everything in UTC. Always. Convert to Pacific Time only when displaying to users who specifically need to see local time. This single rule prevents the majority of timezone-related bugs.
Common Pitfalls
Beginners often try to store local time in databases. This seems reasonable until someone on the East Coast accesses the same records or Daylight Saving Time shifts and your queries return inconsistent results. I've seen production databases where every timestamp was stored as PST, and someone decided to migrate the app to serve users in Toronto. Suddenly "9 AM meetings" were appearing at completely wrong hours because the application code assumed everything was in one zone. Another issue is library support. JavaScript's Date object treats timezone strings differently depending on the browser and runtime version. Python's datetime module doesn't handle DST transitions cleanly without additional packages. If you're using Node, moment-timezone used to be the go-to but it's now in maintenance mode. Use date-fns-tz or Luxon instead. They handle IANA timezone database lookups more reliably and don't carry the same bundle weight.
Get the Full Details

Practical Scheduling Considerations
If you're coordinating with teams in San Francisco, the overlap window with Eastern Time is roughly nine hours during business days, which means 9 AM to 5 PM PST corresponds to 12 PM to 8 PM ET. The sweet spot for synchronous meetings between coasts is usually between 10 AM and 2 PM Pacific, which lands at 1 PM to 5 PM Eastern. Anything earlier than 10 AM Pacific tends to miss the East Coast morning entirely, and anything later runs into the evening on both sides. For async communication, note that San Francisco is roughly three hours behind London during standard time and four hours during daylight saving time. This means a 9 AM PT Tuesday is a 5 PM GMT Tuesday in winter but a 4 PM GMT in summer. The shifting offset catches people off guard if they're not paying attention to which half of the year it is.
When Pacific Time Fails You
There are scenarios where relying on local time just doesn't work. If your system needs to handle legal documents, financial transactions, or audit logs, local time is inadequate because the offset changes twice a year. UTC is the only stable reference. For anything involving compliance or regulatory reporting, storing in UTC isn't just a best practice, it's often a requirement. Another limitation: if your users span multiple timezones within the same region, Pacific Time as a concept becomes ambiguous. Someone in the Eastern Time Zone who travels to San Francisco occasionally might reasonably expect their calendar to show ET, not PT. There's no perfect solution here except to ask users directly what they want and respect that choice consistently.
Tools That Help
The world time API at worldtimeapi.org will give you the current time in San Francisco in JSON format. For programmatic access, the IANA timezone database entry is America/Los_Angeles. If you're doing heavy timezone conversion work, consider running a small container with the tzdata package and using built-in OS-level conversion functions rather than rolling your own offset calculations. The OS handles leap seconds, historical offset changes, and DST rule updates automatically. Your custom implementation won't. Keep in mind that no tool fully solves the human scheduling problem. Timezone math is reliable. Getting a team to agree on a meeting time across three zones simultaneously is not. That's a separate issue with no technical fix.
