Understanding Mexico City Time Zone
Mexico City sits in the Central Time Zone, same as Chicago and Houston, but the daylight saving situation is messier than most US cities because Mexico changed its rules in 2022. If you are scheduling calls with a company in Polanco or setting up a cron job for a server in CDMX, the old UTC-6 / UTC-5 rule no longer applies uniformly across the country. That is the part nobody warns you about until you miss a meeting by an hour. The official offset for Mexico City is UTC-6 year-round now. They eliminated the DST clock change for most municipalities, including the entire Federal District and surrounding states like State of Mexico, Puebla, and Tlaxcala. So right now, when it is 12:00 noon in London, it is 6:00 AM in Mexico City, same as it has been since October 2022. Before that, the city would spring forward to UTC-5 from early April to late October, which is why a lot of documentation you find online is already wrong.
The Ultimate Guide To Time Zone Mexico Df What You Need To Know
I ran into this problem in 2019 when I was coordinating a deployment window between a team in Guadalajara and one in Monterrey. The Guadalajara folks were on Central Time, the Monterrey crew was also on Central Time, but one developer had his IDE hardcoded to US DST rules, so his local clock showed an hour difference for three weeks straight. We lost half a day debugging a timestamp mismatch that had nothing to do with code. My workaround was simple: I stopped relying on any visual clock in the IDE and started using date -u for every commit message and every log entry, formatted in ISO 8601 with explicit UTC offset. That eliminated the ambiguity completely. Since the 2022 law change, Mexico has three time zones instead of the previous four, and the border regions behave differently depending on which side of the line you are on. The main zones are: Zona Centro (Central Zone) — UTC-6, includes Mexico City, Guadalajara, Puebla, Querétaro, San Luis Potosí. This is where the vast majority of business activity happens, and where the old DST confusion used to live. No more spring-forward or fall-back here.
Zona Noroeste (Northwest Zone) — UTC-7, includes Tijuana, Mexicali, Ensenada. These cities follow US Pacific Time because the border economy runs on California schedules. If you are working with a company in Tijuana, do not assume they are on Central Time. They are on Pacific, and they still do DST in lockstep with the US. Zona Pacífico (Pacific Zone) — UTC-7, includes Culiacán, Mazatlán, Hermosillo, Chihuahua. Wait, that looks the same as Northwest, right? It is the same offset, but the DST behavior diverges. Hermosillo and most of Sonora do not observe DST at all, staying UTC-7 permanently. Chihuahua and Durango do follow DST, shifting to UTC-6 in summer. This is where people get burned. Zona Sudoriental (Southeast Zone) — UTC-5, includes Cancún, Champotón, Felipe Carrillo Puerto. This zone does not do DST. It has been UTC-5 since 2015, which is the same offset as Eastern US Time in winter, but different in summer when the US moves to EDT.
Get the Full Details

Common Pitfalls When Working With Mexico City Time
One thing that catches people off guard is the name collision with US Central Time. When a US developer says "CST" they usually mean UTC-6 in winter and CDT (UTC-5) in summer. Mexico City used to do the same, but now it just stays CST (UTC-6) forever. If you see "CST" in any old documentation from before 2022, check the date. Pre-2022 CST could mean either UTC-6 or UTC-5 depending on the month. Post-2022 CST in Mexico City always means UTC-6. The abbreviation itself is still ambiguous; using UTC offsets is the only safe approach. Another issue is the IANA timezone database. Most Linux systems and programming languages rely on it, and it took a while for tzdata to fully reflect the 2022 Mexican law change. If you are running an older Docker image or an outdated CentOS container, your system might still apply US DST rules to "America/Mexico_City". I hit this exact problem in early 2023. A monitoring alert fired at 3 AM local time during the fall transition, but the server logged it as if it were summer time. Updating the tzdata package fixed it, but if you are on a locked-down production environment, you need to verify the version explicitly. Run tzselect or check /usr/share/zoneinfo/America/Mexico_City to see what rules are loaded.
Practical Conversion Reference
Here is what Mexico City time looks like against some major hubs, assuming current rules with no DST: London (GMT/BST): Mexico City is 6 hours behind in winter, 5 hours behind in summer when UK is on BST. Wait, that is the old logic. Under current rules, London is UTC+0 in winter and UTC+1 in summer. Mexico City stays UTC-6. So the gap is 6 hours in UK winter and 7 hours in UK summer. This reversal is unintuitive if you are used to thinking in terms of fixed offsets. New York (EST/EDT): Same asymmetry. New York is UTC-5 in winter, UTC-4 in summer. Mexico City is always UTC-6. Gap is 1 hour in winter, 2 hours in summer.
Los Angeles (PST/PDT): LA is UTC-8 in winter, UTC-7 in summer. Mexico City is UTC-6. Gap is 2 hours in winter, 1 hour in summer. Tijuana is an exception here because it follows Pacific Time, so it stays in sync with LA year-round. Tokyo (JST): Always UTC+9, no DST anywhere in Japan. Mexico City is UTC-6. The gap is 15 hours year-round. This is the one conversion that never changes, which is why you will never see a complaint about it.

Tools and Verification
If you need to verify current time zone rules for a specific date, the IANA database is the source of truth. The website timeanddate.com is reasonably accurate for casual use, but for anything involving compliance or audit trails, query the tzdata directly. In Python, zoneinfo.ZoneInfo("America/Mexico_City") will give you correct transitions if your Python installation is 3.9 or later and tzdata is up to date. In Node.js, the built-in Intl.DateTimeFormat respects the system timezone database, so a stale OS install will give you stale results. For quick checks without writing code, the command line is fastest. On Linux or macOS: date -d "2024-07-15 14:00" +"%Z %z" --zone=America/Mexico_City. On Windows, PowerShell [System.TimeZoneInfo]::ConvertTime(...) works but the API is clunky. I just keep a small tmux pane running watch -n 30 clock -s America/Mexico_City when I am juggling multiple zones for a week.
Border Cities and Special Cases
It is worth calling out the border municipalities explicitly because they operate on a different logic than the rest of Mexico. Ciudad Juárez, Nuevo Laredo, Matamoros, Reynosa, and Tijuana all follow US DST schedules even though they are geographically in Mexico. This was intentional policy designed to align business hours with their American counterparts. So if you schedule a video call with someone in Nuevo Laredo during US spring forward week, they will be on UTC-5 while Mexico City is still on UTC-6. The two cities are only 150 kilometers apart by road, but their clocks differ by an hour for roughly seven months of the year. The reverse is also true. During US fall back week, the hour flips again. If you are building a system that aggregates timestamps from both sides of the border, you need to treat each city as its own timezone entry. You cannot group them under a single "Northern Mexico" bucket without losing accuracy.
What Changed in 2022 and Why It Matters
The Mexican government passed a law in April 2022 that abolished daylight saving time for most of the country. The stated reasons were energy savings (which had proven negligible in decades of data) and quality of life for workers who commuted across time zone boundaries daily. The law took effect in October 2022, and the first transition without a clock change happened on the first Sunday of November that year. The exemption list matters more than the general rule. Four northern states—Sonora, Chihuahua, Coahuila, and Nuevo León—kept the option to observe DST because their economies are tightly coupled with US manufacturing and logistics. Baja California stayed on Pacific Time with US alignment. The rest of the country, including Mexico City, moved to permanent standard time. If you are reading an article about Mexico time zones published before late 2022, treat everything about DST as obsolete.

Edge Case: Daylight Saving Transitions in Legacy Systems
I want to circle back to a specific failure mode because it is more common than you would think. Many embedded devices, legacy ERP systems, and older Java applications ship with hardcoded US DST transition tables. When the 2022 Mexican law took effect, these systems continued applying the old April-to-October shift to "America/Mexico_City", creating a phantom hour of drift. The drift was not catastrophic in most cases, but it showed up in audit logs, invoice timestamps, and payroll records in ways that were hard to trace back. The fix is not always a simple patch. In one case, a mid-sized logistics company in León, Guanajuato had a SAP instance that calculated delivery windows based on local time rules pulled from an outdated SAP note. The system kept scheduling afternoon deliveries at 11 PM local time for three weeks after the law changed, because the backend still thought it was summer. They had to apply a specific SAP certification note (number 3195567, released June 2023) and restart the time zone conversion service. Until that note was applied, every automated dispatch was off by an hour. I learned about this from a colleague who was on the support call, not from any public documentation.
Summary of What Stays Fixed and What Does Not
Mexico City itself: UTC-6 permanently, no exceptions. No clock changes. No seasonal drift. If anyone tells you Mexico City switches to UTC-5 in summer, they are quoting pre-2022 rules. Tijuana: UTC-7 standard, UTC-8 in winter, UTC-7 in summer when US is on PDT. Follows US Pacific DST exactly. Cancún: UTC-5 permanently. Never changes. Same offset as New York in winter, one hour behind in summer.
Hermosillo: UTC-7 permanently. No DST. One of the few Mexican cities that was already on permanent standard time before the 2022 law. Monterrey: UTC-6 in standard time, UTC-5 during US DST summer months. The one major business hub in the country that still changes its clock. Guadalajara: Same as Monterrey, UTC-6/UTC-5 with US-aligned DST. Another major city that did not adopt the permanent time rule.

Wait, that last point is important. Guadalajara and Monterrey are in the Northwest or Pacific zone respectively, not the Central zone where Mexico City sits. The zones themselves are what determine DST behavior, not the city size or economic importance. Mexico City is in Zona Centro, which went permanent. Monterrey and Guadalajara are in zones that retained the option to shift, and they exercise it every year.
How to Handle This in Code Without Getting Burned
If you are writing software that processes timestamps from Mexico, the safest pattern is to store everything in UTC internally and only convert to local time at the point of display. This avoids the entire category of bugs that come from applying the wrong transition rules to the wrong city. When you need to show a local time to a user, resolve the timezone from a user profile or IP geolocation, then use a current IANA database to do the conversion. Do not assume that "America/Mexico_City" will behave the same way in every library. PostgreSQL, for example, uses the system tzdata directly and will reflect the 2022 change as soon as the OS is updated. MySQL does the same. But some ORMs cache timezone rules at compile time or embed their own copy, which can freeze the behavior to whatever was current when the binary was built. Check the documentation for the specific library you are using, not the general concept of timezone handling. The one situation where internal UTC storage does not solve the problem is when you are dealing with historical data that was already stored in local time. If your database has a column of timestamps recorded as "2022-04-10 02:30:00 America/Mexico_City" and the old DST rule applied, that timestamp is ambiguous. It could have occurred twice on that spring forward day. There is no clean way to resolve it without knowing the source system's behavior at the time of insertion. The pragmatic fix is to treat all pre-October 2022 Mexican local timestamps as potentially off by one hour and flag them for manual review if accuracy matters.
Final Thoughts on Working With Mexican Time
The 2022 law simplified things for Mexico City, which is where most foreign businesses interact with Mexican partners, but it complicated things for everyone else in the country because now the rules are no longer uniform. The map of Mexican time zones is not a set of clean vertical bands; it is a patchwork of federal policy, border economics, and historical exceptions. If you need to schedule something once, a conversion website is fine. If you need to build a system that handles Mexican timestamps reliably over years, invest in understanding the zone boundaries and keeping your tzdata updated. The alternative is spending a Friday afternoon figuring out why your logs show events happening before they were recorded.
