I’m dual booting Linux (Fedora 11 with Gnome) and Windows 7. If I set the time in Windows, then boot into Linux, the time remains correct. When I boot back into Windows, the time is off by a few hours. After some reading, it seems that Linux is using UTC time and Windows is using local time.
This issue can be fixed by changing either OS, but because the problem seems to be with Windows mishandling UTC time, I chose to correct it there by turning on a feature called RealTimeIsUniversal. When RealTimeIsUniversal is enabled, Windows will treat the Real-Time Clock (RTC) from the motherboard as UTC time.
Open Regedit, drill down to:
HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
and create a new DWORD entry named “RealTimeIsUniversal”. Set the value to 1.
Shut down Windows and boot Fedora. Set the correct time in Fedora, shutdown, and boot back into Windows. The time should be accurate if you have set your local time to the correct time zone.
It seems that there are problems with Windows XP and Vista whereby Sleep/Hibernate would cause Windows to revert to local time upon waking/resuming, but apparently this has been resolved in Windows 7.
If you prefer to change Fedora, go to Date/Time Properties via System > Administration > Date & Time or by opening a terminal and entering:
system-config-time
Under the Time Zone tab, clear the checkbox next to “System clock uses UTC”.
Under the Network Time Protocol tab, select Enable Network Time Protocol.
Note that your BIOS has no idea what timezone you are in, that’s up to the OS to figure out. If you check the time in the BIOS, it will likely be a few hours off, and that’s OK.