Have you ever tried dual-booting Linux alongside Windows and ended up in a time travel experiment gone wrong? You fire up Windows in the daytime and suddenly, the clock is telling you it's already night.

This is a recurring annoyance with almost all Windows-Linux dual-boot systems. Let's learn why this happens and how to fix this wacky time issue and get back to the present date and time.

Why Does Dual-Booting Linux Mess Up Your Windows Time?

CMOS battery on motherboard

The crux of this issue lies in how both of these operating systems manage the hardware clock.

The hardware clock is a physical segment of your computer's motherboard that's responsible for keeping time. It is powered by the CMOS battery and managed by the kernel of the operating system you're running. Different operating systems manage this clock differently.

Linux sets the hardware clock to Universal Time Coordinated (UTC) whereas Windows assumes the hardware clock is already using local time derived from your current location.

When you're dual-booting both of these systems, Linux continues to provide the correct time because even though it sets the hardware clock to UTC, it calculates the time difference between UTC and your local time and internally sets an offset in the OS clock.

Windows, however, is unaware and untethered by the change in the hardware clock's timezone, and continues to read the time from the hardware clock and presents it as local time.

To fix it, you need to configure both of your operating systems to handle the hardware clock or the OS clock unanimously.

Let's learn three ways to fix Windows showing incorrect time after dual booting Linux.

You should use only one of these methods and not combine them.

1. Make Linux Use Local Time for the Hardware Clock

using timedatectl command to change rtc time

As previously discussed, the issue arises because Linux sets the hardware clock to UTC. The simplest approach to fixing incorrect time display on Windows would be to configure Linux to set the hardware clock, otherwise known as the real-time clock (RTC) to local time.

Windows would then fetch local time from the system clock and display it, fixing the issue. Here's how to set the RTC to use local time on Linux:

  1. Fire up a new terminal window.
  2. Using the timedatectl command, set the RTC to use local time by running this command with the sudo prefix:
            sudo timedatectl set-local rtc 1
        
  3. Reboot your system manually or type in reboot.

That's all the steps required to set the hardware clock to use local time on Linux.

To revert changes, simply type in the same command with a small edit of changing "1" to "0". This is the easiest way to fix the time inconsistency issue when dual-booting.

2. Configure Windows to Auto Sync Time From the Internet

time and date settings in Windows

The last method should have fixed all your time troubles. In case it didn't, here's a quick way to fix your Windows time without having to reboot into Linux.

Both Windows and Linux come with an automated time sync feature that synchronizes the system time with an online time server. Here are the steps to follow to turn on automatic time synchronization:

  1. Right-click the bottom-right corner of the taskbar where the time is displayed.
  2. From the menu that pops up, click on Adjust Date and Time. Or you can open Settings > Time & Language > Date & Time.
  3. Set the correct timezone if it was incorrect and then turn on Set time Automatically by clicking on the slider, and finalize your settings by clicking on Sync Now. Now you should see the time changed to your local time. You can now close the settings window and focus on your better things.

That's all the steps you need to follow to fix your Windows time disrupted by dual-booting Linux.

3. Make Windows Use UTC Time for the Hardware Clock

editing Windows registry to fix incorrect time

As discussed previously, Windows assumes that the hardware clock is set to local time and doesn't bother converting it to your local time again because that would be redundant.

To fix this issue, you can set Windows to configure the hardware clock and set it to UTC so that Windows is forced to convert the UTC from the hardware clock into local time.

This is a more complex fix, so it's recommended you try out the other two solutions and only then resort to this. In case, both the previous fixes failed, here are the steps to follow:

  1. Using the search bar or Win + R shortcut, fire up the Run dialog box on Windows and type in regedit.
  2. With Windows Registry Editor opened, go to this location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.
  3. Right-click the empty space, click on New, and add a new Q-WORD (64-bit) Value entry, giving it the name RealTimeisUniversal. If you're on a 32-bit Windows version, you need to add a D-WORD (32-bit) Value entry instead.
  4. After the entry has been added, double-click on it and set the value to 1 and reboot your system.

Windows will now first set the hardware clock to UTC and then convert UTC to your local time, giving you the correct time and date and thus eliminating the time discrepancy occurring due to dual-booting Windows with Linux.

Back to the Present: Windows Showing Incorrect Time in Dual-Boot Setup Fixed!

The incorrect time when dual-booting is a common problem faced by all dual-boot users irrespective of what version of Windows and Linux they're running.

Unwanted time travel can cause you trouble or embarrassment, but now you know how to tackle this issue in three different ways.

Although the culprit of this issue generally lies in how Linux and Windows approach timekeeping, sometimes, the cause of the issue may be a sign of failing hardware or a security issue such as hidden malware on your system.

In case none of these dual-boot catered fixes seem to work for you, you can consider checking the hardware health of or investigating any traces of malware on your system.