My machine is a regular desktop, but I have power-saving settings currently on (in my BIOS). Whenver the machine goes into suspend mode and comes back, the clock is set forward. I'm not sure what the magic formula is -- sometimes it seems to be set forward 20 minutes, sometimes 4 hours. The only workaround I can figure out at the moment is to disable energy-saving mode from the BIOS.
Further information about the bug: it appears that what happens is that when the resume occurs, the timezone is ignored and the hwclock value is directly set to the real clock value. That, at least, explains the cases I've run up against with the 4 hour move. I'm not sure about the 30-minute shift, but I can't replicate that one yet anyway.
Try grabbing the latest apmd package from Raw Hide; alternatively, start apmd with the '-u' option if your system clock is in UTC. Does that help?
I switched over to storing my clock in regular time, not UTC (using linuxconf) and the problem still persists, sort of. Now, when I do apm -s, it wakes up with the right time, but when I do apm -S, it wakes up with the time set BACK by four hours. This is with the newest apm installed from the updates directory. I haven't tried the RawHide package. The command line invocation for apmd (according to ps) is: /usr/sbin/apmd -p 10 -w 5 -W
One more addition: When time is stored as UTC, then: return from apm -s sets time FORWARD four hours return from apm -S doesn't mess up the clock when time is not stored as UTC, then: return from apm -s doesn't mess up clock return from apm -S sets clock four hours BACKWARDS This would suggest that restoring from apm -s always assumes non-UTC, and restoring from apm -S always assumes UTC. But this is almost too odd to believe.
*** This bug has been marked as a duplicate of 2396 ***