Windows 7 UTC Time Issue

I’ve had a problem with my computer lately with the clock being consistently slow, even though it is set to sync to an internet time server every day. Whenever I would manually sync it to an internet time server, the time would be correct for an hour or so, then suddenly lose time. Before, it was about 5 minutes, but lately, it was 17 minutes. This would cause all sorts of problems, especially when I was working on a file when the time jumped back: suddenly, the latest version of a file had a timestamp 10 minutes earlier than a previous version. Not good! But after extensive testing, I’ve determined the bug.

The problem stems from a registry hack that allows Windows 7 to use UTC in the CMOS real-time clock (RTC). All adult OSes expect that the RTC will be in UTC, and then the OS calculates the corrects time to display for users based on the time zone and daylight savings time. Windows has forever expected the RTC to be in local time, however, which can cause all sorts of problems, such as moving the clock twice for a DST change. Recent versions of Windows have incorporated a registry hack to allow the RTC to be in UTC, but it’s not working perfectly, as I’ve discovered.

For when that hack is in place, when you sync to an internet time server, the correct time is not written to the CMOS RTC, as it is when the RTC time is local time. I believe the problem started on my computer when the CMOS battery was dying and the clock was losing time. When I replaced it, I of course had to set the time in the BIOS manually, and so I got it close enough, thinking that after I did an internet time update it would be written with the correct value. However, this didn’t happen: it kept on losing time. At first, I thought the new battery was dead, so I replaced it, going through the time-setting process again, and guessing even farther off from the correct time. Of course, this incorrect time was the time that Windows kept falling back to after I did manual time updates.

Eventually, after many reboots checking the behaviour of Widows with the RealTimeIsUniversal registry key both “true” and “false”, I discovered that Windows will write the correct time to the CMOS RTC when they key is “false”, but not “true”. And hence the problem.

The solution, if you want to keep UTC in the RTC, is to use another clock to manually set the correct time in the BIOS, because using internet time update won’t save the correct time. This is not cool and pretty much makes internet time update useless. Hopefully, Microsoft will fix this in a future version of Windows. As I said before, all other OSes work just fine with the CMOS clock being UTC, and it really does make the most sense from a computing standpoint. Get with the program!