I use both Linux and Microsoft Windows on one of my PCs. Linux by choice, Windows due to compatibility issues with some drivers/software that I need for my work.
I noticed that my Windows clock was misbehaving. It was 2 or 3 (when using summer time) hours early, meaning it was displaying UTC time and not my local time (UTC+2, UTC+3 respectively).
That was weird! I had set the timezone correctly. If I set the correct time manually, Windows would alter the hardware clock, and this would cause Linux to display the shifted time now.
After a bit of googling, I found out that Windows is at fault here, as it can’t interpret the hardware time correctly. It takes the BIOS time as its local time, and adds or subtracts the timezone difference to set the Windows time.
There is a registry fix for Windows to deal with this. You can create a .reg file with the following lines and import it into your registry, or edit the registry manually (use regedit), as I did, since the .reg file import didn’t work for me in Windows 7.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
This will cause Windows to display the time correctly, and not set the wrong time in the BIOS.
Linux, on the other hand, correctly interprets the hardware clock time as UTC time.
After the fix, both OSes display the correct time for my timezone. Yay!
If one only uses a single OS on his computer, there is no such issue. I, at least, haven’t encountered it.
I dual boot Debian Linux and Windows 7 Professional and came across this issue, your mileage may vary.