Alberta's Time Zone Is Simpler Than People Make It, But It Still Causes Problems
Alberta runs on Mountain Time. That means UTC-7 during standard time and UTC-6 during daylight saving time. Most of the province stays on this schedule year-round. There are a few exceptions in the far southeast around Pincher Creek and Crowsnest Pass that don't observe DST, but that affects roughly a handful of communities. For anyone living in Calgary, Edmonton, or Banff, you shift your clocks forward one hour on the second Sunday in March and back on the first Sunday in November. The reason people get tripped up isn't the base offset. It's the transition periods and the mismatch with provinces that stay on Central or Pacific time. If you're scheduling a cross-country call between Edmonton and Toronto, you're looking at a three-hour gap for most of the year. During DST misalignment in early spring and late fall, that gap can briefly shift. You think you have a window and you don't. I once had a client who needed to sync a deployment window between our Edmonton office and a team in Halifax. I calculated the overlap incorrectly because I forgot that Saskatchewan (which doesn't observe DST) was effectively on Mountain Standard Time year-round, while Alberta was on MDT. The apparent three-hour gap I'd planned for wasn't there. The actual overlap was twelve minutes shorter than I thought. We missed the window by eleven minutes on the first attempt. I started using a live UTC reference after that instead of doing mental math during transition weeks.
Here's what I wish more people knew about this. Time zone conversion tools in operating systems and web services often default to the user's current location. If you're in Vancouver and looking up Alberta time, some interfaces will show you Pacific Time first and you might not catch that the result is wrong. Always double-check that the conversion target is explicitly set to Mountain Time and not just inferred from context. I've seen this burn people multiple times during scheduling. Another thing that catches folks off guard: the federal daylight saving time rules apply uniformly across Canada, but provinces and territories opt in or out. Alberta opts in. Saskatchewan mostly doesn't. Manitoba partially does in some municipalities. This creates situations where a place like Lloydminster, Saskatchewan, which sits right on the border with Alberta, operates on Alberta time year-round because the city chose to align with its larger neighbour. If you're building anything that depends on location-based time lookups and your data source doesn't account for municipal-level overrides, you'll get errors around border towns. For practical work, here's what I do. I store all timestamps in UTC internally. When I need to display or schedule something for Alberta, I convert at the edges. I use IANA time zone identifiers, specifically America/Edmonton, not a fixed offset. Fixed offsets break the moment DST changes. America/Edmonton handles the transitions automatically because the tz database has the rules baked in. This approach has saved me from at least two production incidents in the last three years alone.
If you're building a system that needs to handle Canadian time zones broadly, don't hardcode any of this. Pull from the tz database. The rules change. They've changed before and they'll change again. I've seen teams hardcode "UTC-7 for Alberta" and then spend a weekend fixing bugs when DST adjustments shifted unexpectedly. Don't be that team. For scheduling across Alberta itself, the only real edge case is those non-DST communities in the southeast. If your operations touch Pincher Creek or Crowsnest Pass, note that during summer months they're on MST (UTC-7) while the rest of Alberta is on MDT (UTC-6). They're effectively an hour behind Calgary in July. That matters if you're running coordinated field operations or broadcast schedules that span the province. The broader Canadian context adds another layer. When Alberta is on MDT and Ontario is on EDT, both are technically "daylight time" but they sit on different base offsets. Eastern Daylight is UTC-4 while Mountain Daylight is UTC-6. The two-hour difference during summer is consistent, but in winter it becomes three hours because Ontario stays on EST (UTC-5) while Alberta drops to MST (UTC-7). People who assume the gap is always two hours across Canada run into problems in January.
Get the Full Details

There's also the issue of Indigenous communities that may follow different practices than their surrounding provinces. Some First Nations territories in Alberta and neighboring provinces observe time zones that don't match the provincial standard. If your application serves those populations, you need granular location data, not just province-level assumptions. A postal code lookup is more reliable than a province check in these cases. For most day-to-day purposes though, Alberta is straightforward. Mountain Time. DST observed. Clocks go forward in March, back in November. Use America/Edmonton in your code. Convert to UTC for storage. Account for the southeast exceptions if your scope includes them. That's basically it. The complications only show up when you try to scale this across the rest of the country or automate it without proper tooling. One last practical note. If you're coordinating with the United States, Alberta shares Mountain Time with parts of Montana, Colorado, and New Mexico. But the US and Canada sometimes disagree on DST start and end dates. The North American alignment has been stable since 2007, but it's not guaranteed to stay that way. I've seen discussions about changing DST dates in both countries independently. If you're building something long-lived, design for the possibility of a desync and test around March and November accordingly.