Windows Server 2008 R2 system time randomly resets to 4 hours in the past

Solution 1:

By default, Windows expects the BIOS clock to be set to local time, not UTC. This is not the case under Linux and friends. (Which leads to fun in a dual-boot system.)

Windows recently added a registry setting that allows for the BIOS clock to be set to UTC. However, this setting is not officially supported, and is known to cause issues. http://blogs.technet.com/b/askds/archive/2012/03/09/unresponsive-servers-due-to-dst-and-an-unsupported-registry-key.aspx

From a purely technical standpoint, keeping the BIOS clock in UTC is "better". However, there is plenty of historical baggage in Windows that expects the BIOS clock to be the local time, so you should not mess with that setting unless you have a specific reason for doing so.

So, my recommendations would be to make set your BIOS clock to the local timezone, make sure your time zone is set correctly in Windows, and make sure you have the Windows time service configured to use an external NTP source (since you are not on a domain, use w32tm from the command line to do this).