Linux provides the stime(2) call to set the system time. However, while this will update the system\'s time, it does not set the BIOS hardware clock to match the new system
I would start by reading the source code of hwclock.
If the text editor is different than kubuntu (kate is the default in editor), use your own with the sudo
command in terminal.
sudo kate /etc/default/rcS
press EnterUTC=yes
to UTC=no
Check out the rtc man-page for details, but if you are logged in as root, something like this:
#include <linux/rtc.h>
#include <sys/ioctl.h>
struct rtc_time {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday; /* unused */
int tm_yday; /* unused */
int tm_isdst;/* unused */
};
int fd;
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
After calling stime(), do this:
system("/sbin/hwclock --systohc");
See the hwclock(8) man page for more information.
I would also like to point out the hardware clock is only accurate to a point (I have seen systems that will loose/gain a couple of seconds a day).
Have you considered setting up the network time daemon to sync your clock against a time server?
Admittedly this syncing does not happen until after the daemon starts so keeping your hardware clock in sync also helps between the power up and the point the time daemon syncs against the time server.