BIOS date/time reset

Solution 1:

Time is kept in CMOS during power down and BIOS operation. Once an operating system boots, it is supposed to read the time from the CMOS and start its own timekeeping using other time sources, like the PIT, HPET, PM, APIC or any other timer it finds suitable.

It may, also, at boot apply an adjustment to the CMOS clock based on past measurements of its divergence to time obtained from NTP. During runtime, the OS may keep updating the CMOS clock to a current value every 10 or more minutes, or do that on shutdown only.

The OS also has to handle timezones. Linux by default expects the CMOS clock to be in UTC, whereas Windows expects it to be in the local timezone, including daylight savings.

All of that may contribute to messing up the CMOS clock.

However in your case, given that the start of the problems coincides with you disassembling the machine, the most likely reason seems to be somewhere around the CMOS battery. Make sure the polarity is right all the way to the board if there is a cable involved, check the voltage, it should be 3.2-3.3V.

Check whether the clock is properly advancing while the machine is OFF. Make sure you never boot into Windows and only check in BIOS. Then make sure that the clock is properly advancing when the machine is ON, Windows booted and NTP OFF. Then again with NTP. That should give you enough clues to get to the core of the problem.