Boot Ubuntu for an hour, return to Windows, and the clock is wrong by exactly your timezone offset. Nothing is broken and no battery is dying — the two systems simply disagree about what the motherboard clock means. One command settles the argument permanently.
Your PC has one hardware clock on the motherboard, and both systems read it at boot. Ubuntu treats that clock as UTC (world time) and adds your timezone for display. Windows treats the same clock as your local time. So each system, on shutting down, writes the time back in its own language — and the other system wakes up confused by exactly the offset, five and a half hours for India. Here are both fixes; you only need one.
The simplest settlement is to teach Ubuntu to speak Windows' language: keep the hardware clock in local time. It is a single command, effective immediately.
timedatectl set-local-rtc 1 --adjust-system-clocktimedatectl — the last line now reads RTC in local TZ: yesUbuntu will warn that local time in the hardware clock is not fully supported. For a dual boot machine that warning is acceptable and widely lived with — the warning exists because UTC is the cleaner design, not because the local setting breaks anything in daily use.
With the hardware clock in local time, both systems now read and write the same meaning. Ubuntu still displays everything correctly — it simply stops converting the hardware clock.
One honest caveat: daylight saving changes are now handled by whichever system notices first, which in practice means Windows. In countries without daylight saving — India included — even that caveat never shows up.
If you prefer Ubuntu's cleaner UTC design, Windows can be taught the reverse: read the hardware clock as UTC. It is a registry value, set in one admin command.
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f/v RealTimeIsUniversal /f replaced by the delete form — or set it to 0This route is less commonly used because a few Windows behaviours — some scheduled tasks and older software — assume the local clock. It works, but the Ubuntu-side command is the fix most dual boot users settle on.
The trap to avoid: applying both. If Ubuntu keeps local time and Windows reads the clock as UTC, the disagreement returns in mirror image and the clock is wrong again — now confusing everyone who tries to help you.
Internet time sync in both systems quietly corrects small drift, but it cannot fix this — the offset is not drift, it is definition, and it returns at every boot until one system changes its definition.
The clock fix is a first week polish on the full dual boot setup — watch the complete installation in the video.
▶️ Watch Full VideoBecause Ubuntu keeps the hardware clock on UTC and writes that back at shutdown, while Windows expects the same clock to hold Indian local time — the difference is exactly the IST offset. The timedatectl command on this page makes Ubuntu keep local time instead, and the problem ends permanently.
For most dual boot users, the Ubuntu command. It is one line, instantly reversible, and the setup Windows was designed around. The registry value keeps Ubuntu on the cleaner UTC design and also works, but a few Windows habits assume a local hardware clock, so it is the second choice.
No — minutes of drift are normal hardware clock drift, and both systems correct it automatically when they sync time over the internet. The dual boot problem is always the full timezone offset, appearing right after switching systems. Random large errors after the PC was unplugged for a long time point to the motherboard battery instead.