Linux编程:time/gettimeofday获取时间戳

时间戳:指格林威治时间从1970年1月1日(00:00:00 GMT)至当前时间的总秒数,需要注意的是,时间戳跟时区没有关系,不论在哪个时区,时间戳是一个值。

linux下获得时间戳常用的的方式有两个:

1.通过time函数:

#include 
#include 

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 
#include 

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 
#include 

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编程,linux)