时间戳:指格林威治时间从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字节)。
版权归原作者 风静如云 所有, 如有侵权,请联系我们删除。