Puppy defaults to assuming HW clock is localtime. Other distros usually assume it is UTC time, and linux converts it to localtime when you view it. If you use one of them with Puppy, there will be conflict. Looks like that's what happened - Debian set the HW clock to UTC, and then Puppy read it assuming it was localtime.
Solution: Set Puppy to assume UTC time, or set Debian to assume localtime, and then correct the clock to match whatever you go with.
How? If you want to change Puppy, see here:
http://www.murga-linux.com/puppy/viewtopic.php?t=41680
To instead change Debian, try checking their configuration tools. They probably have an option for it. Else try google.
For saving the current system time, use the hwclock command. You'll need the --systohc option to tell it to save, and either the --local or --utc option depending on which you want the HW clock kept on. Note that that does nothing to inform your OS of what it should interpret the HW clock as on bootup. See above link for directions for Puppy....
FYI, the GMT+8 thing is because POSIX uses the opposite of what everybody else uses, and Linux timezones follow POSIX. Personally I prefer setting my timezone to a more descriptive one (US/Eastern, right now) which has the benefit of accounting for DST automatically if I also keep my HW clock on UTC (syncing from a server can do that instead, but that only works while you are connected to the net. My laptop, for example, is specifically configured to
not automatically connect to wifi unless I tell it to).
[size=75]Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib[/size]
[img]http://www.browserloadofcoolness.com/sig.png[/img]