user@argobox:~/journal/2025-08-07-the-hour-that-kept-shifting
$ cat entry.md

The Hour That Kept Shifting

○ NOT REVIEWED

The Hour That Kept Shifting

Date: 2025-08-07 Duration: About 10 minutes Issue: Clock wrong by one hour after dual booting Root Cause: Windows and Linux handle hardware clock differently


The Symptom

Fresh EndeavourOS install, dual-booting with Windows 10. Works great.

Boot into Windows. Clock shows the wrong time. Off by one hour. Says Mountain Time, but the hour is wrong.

Boot back to Linux. Clock is fine.

Boot to Windows again. Off by an hour. Again.


The Explanation

Windows and Linux have different opinions about what time the hardware clock should store.

Windows: “The hardware clock stores local time. Mountain Time right now is 2:00 PM, so the RTC should say 2:00 PM.”

Linux: “The hardware clock stores UTC. It’s 2:00 PM Mountain, so the RTC should say 8:00 PM UTC.”

When you boot between them, each system “corrects” the time based on its assumptions. Windows sets it to local time. Linux sets it to UTC. Back and forth forever.

The hour difference comes from the timezone offset. Mountain Time is UTC-7 (or UTC-6 during daylight saving). Every boot, the clock shifts by that amount.


The Fix

Two options:

Option 1: Make Linux use local time (easier)

timedatectl set-local-rtc 1 --adjust-system-clock

Option 2: Make Windows use UTC (registry edit)

Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation, create a DWORD called RealTimeIsUniversal, set it to 1.


What I Did

Went with Option 1:

timedatectl set-local-rtc 1 --adjust-system-clock

Got 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.

This warning is Linux being pedantic. For a personal dual-boot desktop, it doesn’t matter. Millions of people run it this way.

Booted into Windows. Clock was correct.

Booted back to Linux. Still correct.

Done.


What I Learned

UTC is theoretically “better.” It doesn’t have daylight saving complications. But for a personal machine that doesn’t travel between timezones, it doesn’t matter.

The registry method is the “proper” fix. But editing the Windows registry for a one-line Linux command seemed excessive.

The warning can be ignored. Linux wants you to use UTC. For enterprise servers, that’s correct. For a gaming desktop that dual boots, local time works fine.


Quick Reference

# Set Linux to use local time (for dual boot with Windows)
timedatectl set-local-rtc 1 --adjust-system-clock

# Revert if needed
timedatectl set-local-rtc 0

# Check current setting
timedatectl

Dual boot broke my clock. Fixed it with one command. Classic Linux vs Windows disagreement about how to do things.