Windows likes to keep the hardware clock in local time by default, while Linux systems prefer to keep it in UTC. Keeping the clock in UTC is better, in that it allows easier daylight savings transitions without keeping track of which local time the HW clock is in now.
Luckily, it looks like Windows could be configured to UTC too. The registry entry that controls it appears to be
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal, which should be set to
1. (If it doesn't exist, create it first. It should be a QWORD on a 64-bit system, and a DWORD on a 32-bit system.)
I didn't test this, but it's suggested in a few places:
The other option of course is to configure Linux to assume the hardware clock is in the local time. With systemd, the command to use seems to be
timedatectl set-local-rtc 1. But note that systemd doesn't really like it,
Warning: The system is configured to read the RTC time in the local time zone.
This mode cannot be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.
/etc/adjtime exists, the setting is stored there (the third line) for use by the
hwclock utility. Systemd updates the file if it exists, but I'm not sure where it stores the setting if the file doesn't exists.
I didn't test this either, and what with the issues with DST, I'd probably try to avoid it.