It's probaly not the system / CMOS battery else you'd get something similar to a CMOS checksum error or a system battery warning or similar every time you cold boot.
Suffice to say you can call your self lucky enough to have a wonky CMOS "RTC". It happens; and, as far as I know, there's no way to fix it* other than sync your clock manually with a time server, say pool.ntp.org (worldwide) or north-america.pool.ntp.org (for North America). . . the time.windows.com and the nist.gov ones are. . . iffy.
If you are using a linux then you most certainly should be synching with ntp.org
*BIOS update?