(Linux)C语言中几个时间类型和函数

时间类型

在Linux C下,常用时间类型有四种:time_t、struct timeval、struct timespec、struct tm

time_t 类型

time_t类型是最基础的日历时间,表示从Linux Epoch(1970.01.01 00:00:00)到现在时刻的秒数,是一个长整型数。
time_t是在 time.h 中定义的:

使用time()函数获取当前时间的time_t值,使用ctime()函数将time_t转为当地时间字符串。
使用difftime()函数可以计算两个time_t值的时间差。

struct timeval 类型

timeval 是一个常用的时间类型,它包含2个成员,一个是 tv_sec 是表示秒数,另一个是 tv_usec 微秒数(是一个小于1,000,000的整数),所以它表示时间的精度是到微秒。
timeval 是在 sys/time.h 中定义的:

struct tm 类型

tm 类型是一个表示分解时间( Broken-down Time)的时间类型,它将时间详细表示为年月日时分秒 he和 时区信息。
tm 是在 time.h 中定义的:

使用gmtime( )和localtime( )可将time_t时间类型转换为tm结构体;
使用mktime( )将tm结构体转换为time_t时间类型;
使用asctime( )将struct tm转换为字符串形式。

时间函数

Linux下常用时间函数有:time( )、ctime( )、gmtime( )、localtime( )、mktime( )、asctime( )、difftime( )、gettimeofday( )、settimeofday( )。上面略有提及,就不一一介绍了。

另外,对于timeval 或者 timespec 类型,计算两个时间差,可以自己写一下函数,如下演示了对timepec类型求差值:

(这里有点代码显示问题

参考文档:
https://www.gnu.org/software/libc/manual/html_node/Time-Types.html
https://en.cppreference.com/w/c/chrono/timespec
https://blog.csdn.net/water_cow/article/details/7521567

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*