How to fix Windows and Linux showing different times when dual booting

Your computer stores the time in a hardware clock on its motherboard. The watch keeps track of the time even when the computer is turned off. By default, Windows assumes that the time is stored in local time, while Linux assumes that the time is stored in UTC time and applies an offset. This will result in one of your operating systems showing the wrong time in a dual boot situation.

To fix this, you have two options: let Linux use local time or Windows use UTC time. Do not follow both steps of the instructions or they still do not speak the same language! We recommend that Linux use local time whenever possible.

Option 1: let Linux use local time

Using Linux to use local time the same way that Windows does, is probably the best option. Windows has a registry setting that forces it to save the time as UTC, but it’s supposedly not well supported and can cause problems with some third-party applications that always assume the hardware clock is in local time. It is also incompatible with Windows’ own Internet time synchronization service.

The steps to get your Linux system to use local time may vary from Linux distribution to Linux distribution. However, you can use the timedatectl Command to make this change. This works on modern versions of Ubuntu, Fedora, Red Hat, Debian, Mint, and other Linux distributions that use systemd.

To make this change, first open a terminal window on your Linux system. Run the following command to change the real time clock on the motherboard to local time. Linux stores the time in local time, just like Windows.

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

To check your current settings, do the following:

timedatectl


If you see “RTC in local TZ: yes”, Linux is set to use the local time zone instead of UTC. The command warns you that this mode is not fully supported and can cause problems when switching between time zones and during daylight saving time. However, this mode is likely to be better supported than the UTC option in Windows. If you dual boot Windows, Windows handles daylight saving time for you.

If you ever want to undo this change, run the following command:

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

Option 2: Windows use UTC time

Letting Windows use UTC time like Linux is probably not the best option. You can edit the registry to make Windows use UTC time, but doing so can potentially cause more problems than just letting Linux use local time.

If you want to do this, the first thing you should do is disable the internet time update feature on Windows. This ensures that Windows does not set the clock incorrectly when trying to synchronize the current time from the Internet. In Windows 10, go to Settings> Time & Language and deactivate “Set the time automatically”. In Windows 7, right-click the system clock in the system tray and select “Adjust date / time”. Click the Internet Time tab, click the Change Settings button, deselect Synchronize with an Internet Time Server, and click OK.

Let Windows use UTC time by editing the registry

Learn to use Registry Editor like a pro

You now need to add the appropriate value to the Windows registry. Here’s our standard warning: the registry editor is a powerful tool, and misusing it can make your system unstable or even inoperable. This is a pretty simple hack, and you shouldn’t have any problems as long as you follow the directions. However, if you have never used it before, be sure to read about Using Registry Editor before you begin. Be sure to back up the registry (and your computer!) Before making any changes.

First open the registry editor by clicking on Start, typing “regedit” and pressing Enter. Agree to the displayed security question.


In the left pane of Registry Editor, navigate to the following key:

HKEY_LOCAL_MACHINESystemCurrentControlSetControlTimeZoneInformation

In the latest versions of Windows 10, you can copy and paste the line above into the address field. However, this hack works on Windows 7 as well.

Right-click the TimeZoneInformation button and select New> DWORD (32-bit) Value.

Name your new value RealTimeIsUniversal.

Double click on that RealTimeIsUniversal Value you just created set the value data on 1and click OK.

You are done now and you can close the registry editor. Windows stores the time in UTC, just like Linux.

If you ever want to undo this change, go back to this location in the registry, right-click the RealTimeIsUniversal Value that you added and delete it from your registry.

Download our one-click registration hack

If you don’t want to edit the registry yourself, you can use our downloadable registry hack. We created a hack that will get Windows to use UTC time and one that will restore it to local time. Both are included in the following zip file. Just download the file, double-click the hack you want to use, and agree to add the information to your registry.

Let Windows use UTC time


The above hacks do the same thing we described above. The Make Windows Use UTC Time hack creates the “RealTimeIsUniversal” entry with the value “1”, while the Make Windows Use Local Time hack deletes the “RealTimeIsUniversal” entry.

If you ever want to see what this or any other .reg file is doing, right-click it and select “Edit” to view the file in Notepad. You can easily create your own registry hacks that are just a list of registry entries that you can add, edit, and remove in a properly formatted list.

What about dual booting Windows on a Mac?

How to install Windows on Mac using Boot Camp

Although Apple’s macOS uses UTC time like Linux, you shouldn’t have to do anything special when running Windows in Boot Camp on a Mac. Apple’s Boot Camp drivers handle it all. (Hackintosh dual booter is a different story, however, and will have to try using the Windows registry optimization mentioned above.)

If you’re wondering why Windows, like other operating systems, uses local time instead of UTC, check out the Microsoft official blog The Old New Thing explains it here. In short, to maintain backward compatibility with Windows 3.1 systems and avoid confusion when setting the time in the computer’s BIOS. Of course, PC makers chose local time to be compatible with Windows, and Windows chose local time to be compatible with PC manufacturers’ decision, so the cycle reinforced itself.

There is currently no standard for marking whether a time is stored in the BIOS or in the UEFI firmware as UTC or local time, which would probably be the most logical solution. But it would take some work, and most people will never notice that different operating systems use different time formats – except in dual-boot configurations.

Related Posts