Recently, I had to install Vista on my laptop. After installation I found that system time in Linux and in Windows had 3 hours difference. So every time I was rebooting into another OS, my system time was set on another value. To track time, I am always using clock in the tray. So changing clock value after each restart was really annoying.
Windows does not change sytem clock value, it changes output on system tray’s clock value according timezone difference only. Vista did not change any value on system clock. It was showing whatever value was left after Linux. Linux was not changing any clock value also. So problem was in time representation in both operating systems.
Occasionally, Linux can represent clock value in UTC, as well as in local time format. In my case, Linux was interpreting value as UTC, and converting it to local time. But windows was reading UTC value of clock, remaining after Linux, thinking that it is a local time, adding timezone difference, and viola! I was getting my three hours difference. Apparently, Vista can not understand that clock is UTC. So I just changed clock representation in Linux.
# clock --localtime