0


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字节)。

标签: linux

本文转载自: https://blog.csdn.net/jiemashizhen/article/details/126395521
版权归原作者 风静如云 所有, 如有侵权,请联系我们删除。

“Linux编程:time/gettimeofday获取时间戳”的评论:

还没有评论