Why installing a dual system causes Windows system time to be incorrect

Why Installing a Dual-Boot System Causes Windows Time to Be Incorrect

Many people who install a dual-boot system with Windows and Linux find that after shutting down Linux and booting into Windows, the system time in Windows is incorrect. Why does this happen?

There are multiple reasons, but the most common root cause is the two systems have different conventions for the hardware clock (RTC/CMOS). When switching back and forth between dual-boot systems, Windows writes local time to the RTC, while Linux reads and writes the RTC as UTC. This causes each system to reinterpret the time modified by the other after every reboot.


Concepts

  • Hardware Clock (RTC): A continuously running clock on the motherboard that keeps time even when the system is powered off, powered by a coin cell battery. The system reads it as the initial time during boot.
  • System Clock: The current time in the operating system’s memory; it takes the initial value from the RTC at boot, advances based on the local timing source during runtime, and occasionally writes back to the RTC.
  • RTC Semantics Difference: Windows traditionally treats the RTC as local time by default, while Linux treats the RTC as UTC by default. These two semantics are incompatible.

Common Scenarios That Cause Time Issues

  • Daylight Saving Time / Time Zone Differences: Even in the same city, if the two systems have different time zone rules or DST databases, local time conversion may be inconsistent.
  • RTC Semantics Difference: Windows traditionally treats the RTC as local time by default, while Linux treats the RTC as UTC by default. These two semantics are incompatible.
  • Windows Fast Startup Technology: Shutting down is effectively a deep hibernation; kernel-mode time state is saved, and the adjusted time may not be written back to the RTC promptly. When the next system boots, it reads the “old RTC” and performs time synchronization again, resulting in apparent jumps.
  • NTP Network Time Sync Causing Apparent Jumps: One system performs step adjustment after connecting to the network for time sync; after switching to the other system, it performs another time sync or resets based on the RTC.

  • Principle: Have both systems store the RTC as UTC. Each system then uses its own time zone rules to convert UTC → local time for display.

  • Set Windows to Use UTC for RTC Storage:

    • Run cmd as Administrator:

      1
      reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f
    • Ensure “Set time automatically / Set time zone automatically” is enabled.

  • Keep Linux as-is (or switch to RTC=UTC): The following code is from the internet

    1
    2
    3
    timedatectl set-local-rtc 0    # 0 表示 RTC 以 UTC 存储
    timedatectl set-ntp true # 启用网络校时(可选)
    timedatectl # 检查 RTC in local TZ: no
  • Disable Windows Fast Startup

    • Control Panel → Power Options → Choose what the power buttons do → Change settings that are currently unavailable (Administrator) → Uncheck “Turn on fast startup”
  • Check Time Zone and DST Data:

    • Select the same city’s time zone on both Windows and Linux; keep Linux’s tzdata updated.
  • Motherboard Maintenance:

    • Replace an aging motherboard coin cell battery

After applying the above configuration to unify the time handling, dual-boot switching should no longer cause time issues.


Why installing a dual system causes Windows system time to be incorrect
https://en.lvlele.top/120-dual-system-windows-time-disorder/
Author
Lvlele 吕了了
Posted on
June 4, 2026
Licensed under