California time zones are a lot less simple than people think
Most people assume California sits entirely in Pacific Time. It does, mostly. But the border regions and certain mountain communities operate on rules that trip up even experienced developers and schedulers. I spent years dealing with scheduling systems that broke in Inyo County. The state spans two time offsets during standard time and daylight saving transitions, depending on location. Most of California stays on Pacific Time (UTC-8 standard, UTC-7 daylight). But a small portion of Alpine County, along with parts of Mono and Inyo counties near the Nevada border, follows Mountain Time instead. This isn't some temporary experiment. It is codified in law and has been consistent since the mid-1900s when the Uniform Time Act was passed. The practical problem is that these mountain time zones in California do not always align with Nevada's time zone behavior. When Nevada skips daylight saving time in certain counties, the border communities in California stay on Pacific but their neighbors across the state line sit on Mountain standard. That creates a period each year where the time difference between places that are geographically adjacent shifts unexpectedly.
I ran into this directly when building a dispatch system for a logistics company that operated in both Bishop and Reno. The scheduling tool I configured assumed all of California was Pacific and all of Nevada was Pacific too, which works for most of Nevada but not everywhere. We ended up with delivery windows that were off by an hour during the first three weeks of November and the last week of March, when the DST transition happens at different times depending on which side of the border you are on. The fix was straightforward but tedious: I had to maintain a lookup table mapping specific county-level locations to their correct IANA timezone identifier rather than relying on city names or state-level assumptions. Using the Olson database entries like America/Los_Angeles and America/Denver and checking against official county boundaries solved it. I used the tzlookup service combined with shapefiles from the Census Bureau to automate the boundary checks.
How the rules actually work
California as a whole adopted daylight saving time under the Uniform Time Act of 1966. The state opted out of the federal permission to observe DST permanently in 1967 and has stayed in the opt-in framework ever since. Senate Bill 838 was introduced recently to consider making DST permanent, but as of now the current system still applies and any change would require congressional approval because states cannot unilaterally opt out of the federal DST schedule under current law. The mountain time enclaves exist because of historical precedent. These areas chose Mountain Time to stay aligned with Nevada and Utah economic partners rather than with Los Angeles or Sacramento. It was a commercial decision more than a cultural one. Places like Westgard Pass and the northern parts of Inyo County have always leaned toward the Reno-Salt Lake corridor for trade and communication. When you are building anything that handles timestamps, the critical detail is that you cannot use a single timezone offset for the entire state. Even within Pacific Time, the transitions happen at the same moment across the zone, but if your system assigns timezone based on city name matching against a flat list, you will misclassify the border areas. The IANA database handles this correctly if you use city coordinates matched to the proper timezone boundary, but many simplified timezone libraries do not include the fine-grained boundary data for these small California enclaves.
Get the Full Details

What breaks in practice
Here is what I have seen go wrong repeatedly. First, scheduling APIs that accept a timezone string like PST or PDT instead of an IANA identifier. Those abbreviations are ambiguous and some systems parse them as UTC offsets without accounting for the actual rules. Second, databases that store timestamps in local time rather than UTC and then convert them back. If the conversion table does not include the correct timezone for a given California county, you get silent errors. The records look fine until you query across a DST boundary and the offsets are wrong by an hour. Third, and this one is subtle, date math that assumes all California locations share the same DST transition dates. They mostly do, but the mountain time areas follow Mountain Time transitions, which are identical to Pacific transitions in terms of when they occur. The issue is not different transition dates, it is different base offsets. A customer in Bishop is on UTC-7 during standard time while Los Angeles is on UTC-8. If your system calculates business hours or cutoff times by applying a flat Pacific offset to everything, the mountain communities will be consistently misaligned by one hour during standard time and correct during daylight time. The worst case I encountered involved a payment processing system that used local time for transaction windows. Cross-border merchants in those Inyo County areas were getting charged late fees because their local business hours did not match what the system expected from a Pacific Time assumption. The financial impact was small per transaction but added up significantly across hundreds of accounts.
Workarounds that actually hold up
The reliable approach is to never store or display timezone as a simple offset. Always use the full IANA timezone database, which is available as a package in most programming languages. In Python that is the tz database you install via pip or your system package manager. In JavaScript it is the timezone data bundled with Node or the third-party libraries that wrap it. The key is referencing it by name, not by offset. For applications that need to know whether a given California address is in Pacific or Mountain time, you need a geocoding layer that returns timezone information based on coordinates. The Google Maps Geocoding API and the OpenStreetMap Nominatim endpoint both return timezone data, but neither is perfect for small enclaves. The most reliable method I found was using the tzwhere library combined with shapefiles from the US Census Bureau. This gives you the correct IANA timezone string for any lat long point within California with high accuracy. If you are working with spreadsheets or simple scripts rather than a full application, a practical compromise is maintaining a CSV file that maps cities and ZIP codes to their correct IANA timezone string. Update it once a year after checking for any legislative changes. This is far more reliable than trying to derive timezone from city names using rule-based logic.
Limitations you should know about
No solution is clean here. The IANA database does not always reflect local ordinance changes quickly. When a county votes to change its timekeeping rules, there is a delay between the legal change and the database update. If you are operating in real time near a transition, you should verify the current rules against official sources rather than trusting the database blindly. Another limitation is that some older systems and libraries simply do not support the full IANA database. Embedded devices, legacy mainframes, and some mobile platforms have reduced timezone sets. If your deployment target includes these, you will need a fallback strategy, usually a manual offset table that you update periodically. Finally, the political dimension cannot be ignored. There have been multiple attempts to make daylight saving time permanent in California. If that happens, the offset landscape shifts, and any system hardcoded around the current transition schedule will need adjustment. The mountain time enclaves would also be affected since they follow federal rules too. Keeping your timezone logic configurable rather than hardcoded is the only way to handle these changes without a full rewrite.

The bottom line is that California time zones work fine if you treat the state as having a single timezone. They fail in frustrating ways when you need accuracy at the county level or when building systems that interact with people in those border communities. A proper IANA-based approach with coordinate resolution solves most of the problems, but you still need to verify edge cases manually and stay alert to legislative changes.