我可以使用struct tm和time(),localtime(),asctime()来获取系统时间。但我需要帮助我如何使用c程序设置系统时间。
答案 0 :(得分:4)
如果您不想执行shell命令,您可以(如您所述)使用settimeofday,我将从阅读MAN page开始,或者查找一些示例
这是一个例子:
#include <sys/time.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{
struct timeval now;
int rc;
now.tv_sec=866208142;
now.tv_usec=290944;
rc=settimeofday(&now, NULL);
if(rc==0) {
printf("settimeofday() successful.\n");
}
else {
printf("settimeofday() failed, "
"errno = %d\n",errno);
return -1;
}
return 0;
}
从IBMs documentation无耻地翻录,struct timeval
结构从1月1日起保持秒数(作为long
)加上微秒数(作为long
) 1970年,00:00:00 UTC(Unix大纪元时间)。因此,您需要计算这些数字才能设置时间。你可以使用这些helper functions来更好地处理timeval结构。