The Clock That Forgot Its Timezone
Date: 2025-08-07 Duration: 10 minutes (once I understood the problem) Issue: Windows showing wrong time after dual-boot Linux install Root Cause: Hardware clock interpretation conflict
The Symptom
Installed Linux on my dual-boot machine. Booted into Windows the next morning. Clock said 7:00 AM.
It was 2:00 PM.
Timezone still showed Mountain. Windows wasn’t confused about where I was. It was confused about when.
The Problem
Windows and Linux disagree on how to store time in the hardware clock (RTC - Real Time Clock):
Windows: Stores local time. If you’re in Mountain timezone and it’s 2:00 PM, the hardware clock says 14:00.
Linux: Stores UTC. If you’re in Mountain timezone and it’s 2:00 PM, the hardware clock says 20:00 (or 21:00, depending on daylight saving).
When you switch between them:
- Linux boots, sets hardware clock to UTC
- Windows boots, reads hardware clock, assumes it’s local time
- Windows shows completely wrong time
- You feel like you time traveled
The Fix
Two options:
Option 1: Make Linux use local time like Windows
timedatectl set-local-rtc 1 --adjust-system-clock
Linux will complain with a scary warning about how this isn’t the “proper” way to do things. Ignore it. For a personal dual-boot system, this works fine.
Option 2: Make Windows use UTC like Linux
Open Registry Editor as admin, navigate to:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Create a DWORD value named RealTimeIsUniversal, set to 1.
Which I Chose
Option 1. One command versus editing the Windows registry? Easy choice.
Yes, Linux threw a warning:
Warning: The system is now being configured to read the RTC time in the local time zone
This mode cannot be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments.
Millions of dual-boot systems run this way without issues. The warning is technically correct but practically irrelevant for a desktop machine that doesn’t travel between timezones.
Why This Happens
Both approaches are valid. Linux chose UTC because servers benefit from a consistent time reference that doesn’t jump around for daylight saving. Windows chose local time because… Windows.
Neither is wrong. They’re just incompatible defaults.
The real question is: why, in 2025, do we still store time in hardware as a single number with no metadata about how to interpret it? But that’s a rant for another day.
After The Fix
Booted into Windows. Time was correct.
Booted into Linux. Time was still correct.
Problem solved. Now I just need to remember that this happened in case I reinstall either OS and lose the setting.
My computer travels between two operating systems. It needed a passport for the timezone.