0

I have an incorrect time on my Windows machine. I'm not sure how to specify the proper timezone and setup an NTP synchronization. When I'm using a dualboot configuration with Linux (Ubuntu) my time is getting off by two hours every time I boot Windows.

How do I set up a robust time synchronization on my Windows 8 OS?

2 Answers 2

3

The answer is actually timezone differences - See this:

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

Operating systems store and retrieve the time in the hardware clock located on your motherboard so that it can keep track of the time even when the system does not have power. Most operating systems (Linux/Unix/Mac) store the time on the hardware clock as UTC by default, though some systems (notably Microsoft Windows) store the time on the hardware clock as the 'local' time. This causes problems in a dual boot system if both systems view the hardware clock differently.

The advantage of having the hardware clock as UTC is that you don't need to change the hardware clock when moving between timezones or when Daylight Savings Time (DST) begins or ends as UTC does not have DST or timezone offsets.

Changing Linux to use local time is easier and more reliable than changing Windows to use UTC, so dual-boot Linux/Windows systems tend to use local time.

Since Intrepid (8.10), UTC=yes is default.

Make Windows use UTC:

Note: This method was not initially supported on Windows Vista and Server 2008, but came back with Vista SP2, Windows 7 and Server 2008 R2.

To make MS Windows calculate the time from the hardware clock as UTC.

Create a file named WindowsTimeFixUTC.reg with the following contents and then double click on it to merge the contents with the registry:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

Make Linux use 'Local' time:

To tell your Ubuntu system that the hardware clock is set to 'local' time:

  1. edit /etc/default/rcS
  2. add or change the following section
#Set UTC=yes if your hardware clock is set to UTC (GMT)
UTC=no

Source

2
  • The same used to happen to me with every multiboot system I built. Can you accept the answer as well? Nov 28, 2013 at 14:03
  • This value needs to be a QWORD on 64-bit systems, Jun 8, 2019 at 5:50
1

This guide will provide you with robust bullet-proof time synchronization in Windows 8 and Windows 7. Also, it will allow you to overcome some difficulties when using dual-boot with Linux.

Notice: you will need an administrative privileges to complete this setup.

If you have any problems, questions, ideas — please leave a comment.


Select proper timezone

First of all you need to open the Date and Time configuration window. You can do so by clicking on a time widget in your toolbar using right mouse button and select Adjust date/time. Then you should click Change time zone... button. Now make sure that your time zone is configured correctly. If not, select proper one from the drop down menu.

If you don't know your timezone in UTC standard, you can find it here. Just select your country and city in the left menu. Your timezone will be written under the current time: e.g.: Moscow Time (MSK) +0400 UTC

Now close the window by clicking OK button.


Select NTP-server

Open the tab called Internet Time and hit Change settings... button (you will need an administrator's privileges). Make sure that checkbox is ticked in the opened window.

Now we want to specify a valid NTP-server. This will allow your computer to automatically synchronize time from the remote server. I would recommend you to use the server from ntp.org. Just open the website, select your region from the right menu (e.g. Europe), select your country on the following page. Now you should see an address of the proper NTP server for your country in the header, e.g.: Russian Federation — ru.pool.ntp.org. Copy this address and paste it in the Server text box of the Internet Time Settings dialogue. Click OK.

You can close the Date and Time window now.


Updating time at boot

Next thing we should do is to setup Task Scheduler to update our time during boot up process.

Open the Control Panel. Find Administrative Tools and open it. Now open Task Scheduler from the list of administrative tools.

Click Actions > Create Task...

On the General tab:

  • Specify the name, e.g.: Synchronize Time
  • Tick Run whether user is logged on or not
  • Tick Run with highest privileges
  • Make sure that the proper user is selected (it must have administrative privileges). You can change user by clicking Change user or Group

On the Triggers tab:

Click the New... button.

Select At startup from the Begin the task dropdown menu.

You can also create another triggers if you want. For example you can run this task every hour to make sure that you have a precise time

Click OK button.

On the Actions tab:

Click the New... button.

Fill the form according to this values:

Program/script: schtasks

Add arguments (optional):

/Run /I /TN "Microsoft\Windows\Time Synchronization\ForceSynchronizeTime"

We are using schtasks console util to run special Microsoft's task that comes with Windows called ForceSynchronizeTime which is used to forcibly update the date and time.

Click OK button.

On the Conditions tab:

  • Untick Start the task only if the computer is on AC power

On the Settings tab:

Tick Run task as soon as possible after a scheduled start is missed

Tick If the task fails, restart every and select 1 minute, also specify 15 times for Attempt to restart up to.

Tick Stop the task if it runs longer than and specify 5 minutes.

Click OK button.

Enter the password for selected user when prompted.


Test (optional)

Adjust your time manually so it become incorrect. Right click on the created task in the list of the tasks and click Run. If everything configured correctly your time will be updated from the selected NTP server.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .