Several days ago, I managed to install Linux (PoP!_OS) on the laptop's second harddisk. To boot into either of the OS, all I needed to do was choose the OS to boot into when the laptop is powering up by long pressing F7 (for my laptop).
Then I noticed something weird. The time for Windows changed after coming over from using Linux. I had to change it manually but every time I boot to Linux, the problem repeats itself.
Different assumption of hardware clock by OS
Searching online, I found an article which said that Linux and Windows has different assumptions when they used the hardware clock called "Real Time Clock (RTC)" or CMOS/BIOS clock.
It seems that Linux assumes that the time stored in the hardware clock is in Coordinated Universal Time (UTC) while Windows on the other hand think it is local time. This caused the Windows' time to change from 5pm in Singapore to 9am after switching to Windows from Linux.
The fix is fortunately very simple and it is done in Linux. There is only one command to execute.
After booting into Linux, open terminal and enter this command.
timedatectl set-local-rtc 1
While there is a warning, I have not experienced any issue thus far. From the warning statement, I assume that as long as there is time sync service from the network, it should work perfectly fine.
Now, Windows and Linux are having the same time. I no longer need to change it manually.