【时间函数】gettimeofday

前言

最近在使用C函数gettimeofday的时候,产生了一些疑惑。查阅了相关的资料,再次厘清了gettimeofday的用法,记录在此文档中,以便后续查找。

gettimeofday是什么?

gettimeofday是一个时间相关的标准C库函数。

gettimeofday能干什么?

gettimeofday能够获取到精确到微妙级的时间。

gettimeofday获取到的时间是什么?

getimeofday获取到的是自1970-01-01 00:00:00 +0000 (UTC)以来的秒数和微秒数。
注意:获取到的秒数和微秒数都是以UTC时间为基准来换算的,而不是本地时间。譬如:当前北京时间为2022-06-09 10:00:00,在计算时会先将北京时间转换成UTC时间2022-06-09 02:00:00,再去换算秒数和微秒数。

gettimeofday要怎么使用?

头文件:

#include <sys/time.h>

原型:

int gettimeofday(struct timeval *tv, struct timezone *tz);

接收两个输出型参数tvtz ,返回一个int型的值。

其中 :

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
struct timezone {
    int tz_minuteswest;     /* minutes west of Greenwich */
    int tz_dsttime;         /* type of DST correction */
};

tv:自1970-01-01 00:00:00 +0000 (UTC)以来的秒数和微秒数。
tz:表示时区和夏令时信息。
注意:tz时区结构的使用是一个过时的设计,要求调用者在使用时将tz这个参数设置为NULL。
测试发现,如果不设置为NULL,取到的tz的值是{0,0}。

返回值:
0:操作成功
-1:操作失败

示例代码

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

int main (int argc, char** argv)
{
	struct timeval tv = {0};
	int retVal = gettimeofday(&tv, NULL);
	if (0 == retVal) {
		printf("sec:%ld,usec:%ld since 1970-01-01 00:00:00 UTC\n", tv.tv_sec, tv.tv_usec);
	}
	return 0;
}
  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值