Linux编程:time/gettimeofday获取时间戳
Posted 风静如云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux编程:time/gettimeofday获取时间戳相关的知识,希望对你有一定的参考价值。
时间戳:指格林威治时间从1970年1月1日(00:00:00 GMT)至当前时间的总秒数,需要注意的是,时间戳跟时区没有关系,不论在哪个时区,时间戳是一个值。
linux下获得时间戳常用的的方式有两个:
1.通过time函数:
#include <stdio.h>
#include <time.h>
time_t timeStamp()
time_t time_now = time(NULL);
return time_now;
int main(int argc, char *argv[])
time_t ts = timeStamp();
printf("timestamp is %ld\\n", ts);
return 0;
运行程序输出:
timestamp is 1660745869
2.通过gettimeofday
#include <stdio.h>
#include <sys/time.h>
time_t timeStamp()
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_sec;
int main(int argc, char *argv[])
time_t ts = timeStamp();
printf("timestamp is %ld\\n", ts);
return 0;
运行程序输出:
timestamp is 1660745993
struct timeval
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
;
可见gettimeofday除了可以获得秒数外,还可以获得微秒值。
#include <stdio.h>
#include <sys/time.h>
void printTime()
struct timeval tv;
gettimeofday(&tv, NULL);
printf("timestamp is %ld.%ld\\n", tv.tv_sec, tv.tv_usec);
int main(int argc, char *argv[])
printTime();
return 0;
运行程序输出:
timestamp is 1660748088.804232
需要注意的是time_t所能表示的长度,之前被定义为了long型(4字节),目前在被定义为了long long型(8字节)。
c语言linux打印运行时间(耗时) gettimeofday()timeval<sys/time.h>
#include <stdio.h>
#include <sys/time.h>
double __get_us(struct timeval t)
return (t.tv_sec * 1000000 + t.tv_usec);
int main()
struct timeval start_time, stop_time;
gettimeofday(&start_time, NULL);
//待运行代码
gettimeofday(&stop_time, NULL);
printf("Time use %f ms\\n", (__get_us(stop_time) - __get_us(start_time)) / 1000);
示例(在ubuntu16.04上):
test.c
#include <stdio.h> //使用printf()需要包含
#include <sys/time.h>
#include <unistd.h> //使用sleep()函数需要包含
double __get_us(struct timeval t)
return (t.tv_sec * 1000000 + t.tv_usec);
int main()
struct timeval start_time, stop_time;
gettimeofday(&start_time, NULL);
//待运行代码
sleep(1);
gettimeofday(&stop_time, NULL);
printf("Time use %f ms\\n", (__get_us(stop_time) - __get_us(start_time)) / 1000);
编译运行结果:
[root@ubuntu /arnold_test/20211227_TEST]12# gcc test.c
[root@ubuntu /arnold_test/20211227_TEST]13# ./a.out
Time use 1000.994000 ms
参考文章:C语言linux gettimeofday()函数和time()函数的区别(后者只能得到秒级系统时间,前者能得到毫秒甚至微秒级系统时间)
以上是关于Linux编程:time/gettimeofday获取时间戳的主要内容,如果未能解决你的问题,请参考以下文章