2 Answers
2

A typical BIOS PC has a clock which stores the time without a timezone indication. Different operating systems have different conventions: some require the clock to store UTC, others require the clock to store the local time. Dual boot between systems that require different conventions is a problem.

Older versions of Windows had no notion of a display time that is separate from the local time. Hence you need to set the hardware clock to the time you want displayed in Windows. I don't know if this has been fixed in Windows 7.

Unix systems have a per-user setting for the time zone, and use UTC internally. Most unix variants like to use UTC the clock, but unices designed for PCs often provide a way to cohabit with Windows. On FreeBSD, run tzsetup then adjkerntz to update this setting. You can tell whether the hardware clock is using UTC or local time: if /etc/wall_cmos_clock exists, then the hardware clock is assumed to use local time.

Note that if you live in a time zone with daylight savings time, and your hardware clock uses local time, your multiple operating systems may compete to reset the clock when DST starts or ends. This is one reason why setting the hardware clock to UTC is preferable: you should set the hardware clock to local time only if you use an operating system that absolutely requires it.

Windows is able to handle hardware clock in UTC: from XP to W7, it was accomplished by setting RealTimeIsUniversal registry parameter; W8 is reported to ignore that. However, XP's implementation was not complete, and the system clock dropped to the default “local time” behavior every hour or two, — probably each time sysclock was synched to hwclock.
–
Anton SamsonovMar 6 at 17:36