You boot Linux, then reboot into Windows, and the taskbar clock is off by exactly your UTC offset: five hours in New York, eight in Los Angeles, one or two in much of Europe. Fix it in Windows and Linux goes wrong instead. Nothing is broken: the two systems read the motherboard clock (RTC) differently.
Why it happens
| OS | How it reads the hardware clock |
|---|---|
| Windows (default) | Assumes it stores local time |
| Linux (default) | Assumes it stores UTC |
When Linux writes UTC to the RTC, Windows reads that value as local time and shows it shifted by your offset. The fix is to make one system follow the other’s convention.
Option 1. Make Windows use UTC (recommended)
This leaves Linux at its default and handles daylight saving time correctly, which is why most Linux documentation recommends it. Open an elevated Command Prompt in Windows and run:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_QWORD /d 1 /f
Use REG_QWORD on 64-bit Windows and REG_DWORD on 32-bit. Reboot, then click Settings → Time & language → Sync now once. Both systems will stay correct from then on.
Option 2. Make Linux use local time
If you would rather not touch the Windows registry, change Linux with one command:
timedatectl set-local-rtc 1 --adjust-system-clock
# Check: look for "RTC in local TZ: yes"
timedatectl
timedatectl will warn that keeping the RTC in local time is not recommended. The real risk is around daylight saving changes, when the clock can be off by an hour until it syncs. To undo it, run timedatectl set-local-rtc 0.
Which one should you pick?
| Situation | Pick |
|---|---|
| You live in a region with daylight saving time | Option 1 (Windows on UTC) |
| Work PC where registry changes are restricted | Option 2 (Linux on local time) |
| Managing several machines the same way | Standardize on Option 1 |
Do not apply both. If both systems switch, they disagree again.
Still drifting?
- Off by a few minutes: the CMOS battery (CR2032) is often dying. If the date resets after unplugging the PC, replace it.
- Wrong time zone: check the Windows time zone, and in Linux run
timedatectl set-timezonewith your zone, for exampleAmerica/New_York. - Sync fails: some corporate firewalls block NTP (UDP 123), so automatic sync never happens.