linux下修改系统时间
2012-08-20 16:06
281 查看
当然不是通过命令,命令的话要好好看下date,因为这两天的任务一直是系统时间相关,这里只是简明说说settimeofday这个函数.
NAME
gettimeofday, settimeofday - get / set time
SYNOPSIS
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
DESCRIPTION
The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.
The tv argument is a struct timeval (as specified in <sys/time.h>):
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
and gives the number of seconds and microseconds since the Epoch (see time(2)). The tz argu-
ment is a struct timezone:
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
If either tv or tz is NULL, the corresponding structure is not set or returned.
settimeofday用于修改当前系统时间(只改变系统时间,不改变硬件时钟时间,有的硬件上有RTC模块),tv表示需要设置的时间,tz表示时区。
把tm时间格式转换成tv->tv_sec:
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
The members of the tm structure are:
tm_sec The number of seconds after the minute, normally in the range 0 to 59, but can be up to
60 to allow for leap seconds.
tm_min The number of minutes after the hour, in the range 0 to 59.
tm_hour
The number of hours past midnight, in the range 0 to 23.
tm_mday
The day of the month, in the range 1 to 31.
tm_mon
The number of months since January, in the range 0 to 11.
tm_year
The number of years since 1900.
tm_wday
The number of days since Sunday, in the range 0 to 6.
tm_yday
The number of days since January 1, in the range 0 to 365.
tm_isdst
A flag that indicates whether daylight saving time is in effect at the time described.
The value is positive if daylight saving time is in effect, zero if it is not, and nega-
tive if the information is not available.
将tm格式时间转换time_t,可以用mktime()或者timegm(),因此可以设置好tm结构中的值后,用这两个函数转换,最后调用settimeofday即可:
NAME
gettimeofday, settimeofday - get / set time
SYNOPSIS
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
DESCRIPTION
The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.
The tv argument is a struct timeval (as specified in <sys/time.h>):
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
and gives the number of seconds and microseconds since the Epoch (see time(2)). The tz argu-
ment is a struct timezone:
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
If either tv or tz is NULL, the corresponding structure is not set or returned.
settimeofday用于修改当前系统时间(只改变系统时间,不改变硬件时钟时间,有的硬件上有RTC模块),tv表示需要设置的时间,tz表示时区。
把tm时间格式转换成tv->tv_sec:
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
The members of the tm structure are:
tm_sec The number of seconds after the minute, normally in the range 0 to 59, but can be up to
60 to allow for leap seconds.
tm_min The number of minutes after the hour, in the range 0 to 59.
tm_hour
The number of hours past midnight, in the range 0 to 23.
tm_mday
The day of the month, in the range 1 to 31.
tm_mon
The number of months since January, in the range 0 to 11.
tm_year
The number of years since 1900.
tm_wday
The number of days since Sunday, in the range 0 to 6.
tm_yday
The number of days since January 1, in the range 0 to 365.
tm_isdst
A flag that indicates whether daylight saving time is in effect at the time described.
The value is positive if daylight saving time is in effect, zero if it is not, and nega-
tive if the information is not available.
将tm格式时间转换time_t,可以用mktime()或者timegm(),因此可以设置好tm结构中的值后,用这两个函数转换,最后调用settimeofday即可:
void default_system_time() { struct timeval tv; struct tm rtm; memset(&rtm, 0, sizeof(rtm)); memset(&tv, 0, sizeof(tv)); rtm.tm_year = 70; rtm.tm_mon = 1; rtm.tm_mday = 1; rtm.tm_hour = 0; rtm.tm_min = 0; rtm.tm_sec = 0; /* convert tm to timeval.sec */ //tv.tv_sec = timegm(&rtm); tv.tv_sec = mktime(&rtm); settimeofday(&tv, NULL); }
相关文章推荐
- 我使用过的Linux命令之date - 显示、修改系统日期时间
- Linux 修改系统时间
- linux系统时间修改及同步
- linux 修改系统时间
- AIX和Linux系统时间修改
- linux下如何修改系统时间
- linux修改系统时间最佳方法
- linux查看和修改系统时间和时区
- Linux修改系统时间
- linux系统修改时间
- linux查看和修改系统时间
- 修改linux系统时间方法 总结
- linux修改系统时间
- 关于linux系统下CST时间的修改以及对MB中关于CURRENT_TIMESTAMP函数
- Linux Date修改系统时间
- 命令修改linux系统时间
- Linux系统下ACM时间查看修改和文件目录权限处理
- linux date命令参数及用法详解--linux查看修改系统时间
- linux 系统如何 修改系统时间
- 修改 linux 默认启动级别 设置系统时间 定时关机