Warning: I particularly hate Daylight Savings Time (DST), so this post is tainted with negativity. However, I work hard to prepare myself and family for the biannual time change, so this post explores how I set my mental model up for the clocks going forwards in the UK.
It’s 28th March as I write this from the UK.
The UK should have moved to DST according to my mental model. This should have happened last weekend.
I even did some family sleep time prepping last weekend. I even wrongly tooted about it and then corrected myself.
All of this has happened because my mental model about DST in the UK is WRONG 🤦.
🇺🇸 USA and 🇨🇦 Canada
Canada is a country that I like - some of our friends and family live there and I’ve visited multiple times. I also like the USA - I’ve worked for USA companies and have visited multiple times.
All this means (I think) I’m well connected to what timezone the USA and Canada are on any particular day. So when they move to DST (which happens before the UK and Europe’s change), we get a brief couple of weeks where:
- We get more overlap with family and friends in Canada because their summer time is closer by 1 hour to GMT.
- As an NHL ice hockey follower, most games start at midnight UK time, but for this period, games start an hour earlier.
Let’s call this period the “1 hour closer overlap”.
🧠 Mental model
My mental model is based off this “1 hour closer overlap”. In my head this overlap lasts two weeks - I don’t know why - I’ve just programmed that as a “fact”.
Therefore, my mental model for:
When does the UK apply DST and switch from GMT?
Is…
Two weeks after North America changes to DST.
This can be WRONG (sometimes).
This year, 2024, is one of those wrong years.
⚠️ The problem
I didn’t realise how ingrained this two week duration of overlap was in me, so let’s check facts and find out if I need an upgrade.
First fact
UK’s biannual switch to DST happens on the last Sunday in March:
[In the UK] BST begins at 01:00 GMT every year on the last Sunday of March
Second fact
North America’s biannual switch to DST happens on the second Sunday in March
In the U.S., daylight saving time starts on the second Sunday in March
🚨 Calendar Siren! 🚨
For any months of March where the last Sunday happens in the fifth week of March, the “1 hour closer overlap” will be three weeks long, not two.
📅 Checking future overlaps
In order to have a look at what the ‘normal’ overlap looks like, I’m going to brute force the calculation of how many days the “1 hour closer overlap” lasts for each year from 2014 to 2033 inclusive.
I’m going to use Python with the rrule()
from
dateutil and stuff the
data inside a Pandas
DataFrame.
In [1]: import datetime
In [2]: import pandas as pd
In [3]: from dateutil.rrule import rrule, YEARLY, SU
In [4]: # Build UK and USA start dates using rrule
...: dst_df = pd.DataFrame(data={
...: 'UK DST Start': rrule(
...: YEARLY,
...: dtstart=datetime.date(2014, 1, 1),
...: count=20,
...: bymonth=3,
...: byweekday=SU(-1)), # Last Sunday of the month
...: 'USA DST Start': rrule(
...: YEARLY,
...: dtstart=datetime.date(2014, 1, 1),
...: count=20,
...: bymonth=3,
...: byweekday=SU(2)), # Second Sunday of the month
...: }
...: )
In [5]: dst_df['Weeks overlap'] = dst_df['UK DST Start'] - dst_df['USA DST Start']
In [6]: dst_df[' '] = dst_df.apply(lambda r: "👈 You are here" if r['UK DST Start'].year == 2024 else '',
...: axis='columns')
In [7]: dst_df
Out[7]:
UK DST Start USA DST Start Weeks overlap
0 2014-03-30 2014-03-09 21 days
1 2015-03-29 2015-03-08 21 days
2 2016-03-27 2016-03-13 14 days
3 2017-03-26 2017-03-12 14 days
4 2018-03-25 2018-03-11 14 days
5 2019-03-31 2019-03-10 21 days
6 2020-03-29 2020-03-08 21 days
7 2021-03-28 2021-03-14 14 days
8 2022-03-27 2022-03-13 14 days
9 2023-03-26 2023-03-12 14 days
10 2024-03-31 2024-03-10 21 days 👈 You are here
11 2025-03-30 2025-03-09 21 days
12 2026-03-29 2026-03-08 21 days
13 2027-03-28 2027-03-14 14 days
14 2028-03-26 2028-03-12 14 days
15 2029-03-25 2029-03-11 14 days
16 2030-03-31 2030-03-10 21 days
17 2031-03-30 2031-03-09 21 days
18 2032-03-28 2032-03-14 14 days
19 2033-03-27 2033-03-13 14 days
Wow - so there are many more 3 week overlaps than I thought!
👀 Review
Looking back, only two of the last eight years have had a three week “1 hour closer overlap”.
Let’s be honest, I’m not sure how I missed the three week overlap in 2019.
But for the 2020 one, although I was working for a US company, we were in
COVID lock-down and child[0]
was only a few weeks old so I was on parental leave.
However, looking forward, 2024 marks the start of a 3 year run of three week overlaps!
🧠 A new mental model
So my conclusion is that my previous mental model was pretty poor. It’s time for a new one. Here we go:
When March starts on a Friday, Saturday or Sunday then there will be 3 weeks of “1 hour closer overlap” with North America, otherwise it’s 2.
Let’s confirm that by averaging the twenty years in the DataFrame above:
# Add a 'first' column which contains the first day of March for each year
In [23]: dst_df['first'] = dst_df.apply(
...: lambda r: datetime.date(r['UK DST Start'].year, 3, 1).strftime('%a'),
...: axis='columns',
...: )
In [24]: dst_df.groupby('first')['Weeks overlap'].mean()
Out[24]:
first
Fri 21 days
Mon 14 days
Sat 21 days
Sun 21 days
Thu 14 days
Tue 14 days
Wed 14 days
Name: Weeks overlap, dtype: timedelta64[ns]
That looks right - so that’s my new mental model sorted.
Now I just need to remember to check on what NHL ice hockey games will be happening between 9th and 30th March 2025 when the schedule is published - that’s going to be three weeks of “easier to watch” matches! 😊