C语言中settimeofday函数和gettimeofday函数的使用
C语言中settimeofday函数和gettimeofday函数的使用
发布时间:2016-12-28 来源:查字典编辑
摘要:C语言settimeofday()函数:设置当前时间戳头文件:#include#include定义函数:intsettimeofday(co...

C语言settimeofday()函数:设置当前时间戳

头文件:

#include <sys/time.h> #include <unistd.h>

定义函数:

int settimeofday(const struct timeval *tv, const struct timezone *tz);

函数说明:settimeofday()会把目前时间设成由tv 所指的结构信息,当地时区信息则设成tz 所指的结构。详细的说明请参考gettimeofday()。

注意,在Linux下,只有root 权限才能使用此函数修改时间。

返回值:成功则返回0,失败返回-1,错误代码存于errno。

错误代码:

EPERM 并非由root 权限调用settimeofday(),权限不够。

EINVAL 时区或某个数据是不正确的,无法正确设置时间。

C语言gettimeofday()函数:获取当前时间

头文件:

#include <sys/time.h> #include <unistd.h>

定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);

函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。

timeval 结构定义为:

struct timeval{ long tv_sec; //秒 long tv_usec; //微秒 };

timezone 结构定义为:

struct timezone { int tz_minuteswest; //和Greenwich 时间差了多少分钟 int tz_dsttime; //日光节约时间的状态 };

上述两个结构都定义在/usr/include/sys/time.h. tz_dsttime 所代表的状态如下

DST_NONE //不使用 DST_USA //美国 DST_AUST //澳洲 DST_WET //西欧 DST_MET //中欧 DST_EET //东欧 DST_CAN //加拿大 DST_GB //大不列颠 DST_RUM //罗马尼亚 DST_TUR //土耳其 DST_AUSTALT //澳洲(1986 年以后)

返回值:成功则返回0,失败返回-1,错误代码存于errno。

附加说明:EFAULT 指针tv 和tz 所指的内存空间超出存取权限。

范例

#include <sys/time.h> #include <unistd.h> main(){ struct timeval tv; struct timezone tz; gettimeofday (&tv, &tz); printf("tv_sec; %dn", tv.tv_sec); printf("tv_usec; %dn", tv.tv_usec); printf("tz_minuteswest; %dn", tz.tz_minuteswest); printf("tz_dsttime, %dn", tz.tz_dsttime); }

执行结果:

tv_sec: 974857339 tv_usec:136996 tz_minuteswest:-540 tz_dsttime:0

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类