Problem:
You have a dual-boot system. Every time you reboot from Linux to Windows, the time is shifted by several hours.
Solution:
On Linux, run
sudo timedatectl set-local-rtc 1
This will configure Linux to store local time in the RTC.
See this StackOverflow post for alternate solutions
Background:
Both Linux and Windows use the hardware clock (RTC – Real time clock) integrated into the computer hardware. However, Windows assumes that the RTC stores local time by default whereas Linux assumes the RTC stores UTC time.