时间类
简介
time.h头文件定义了四个变量类型,两个宏和各种操作日期和时间的函数
types
序号 |
types |
描述 |
定义 |
1 |
size_t |
无符号整数类型,它是sizeof关键字的结果 |
long unsigned int |
2 |
clock_t |
用来保存处理器的CLOCKS,也就是CPU ticks,通常配合一个宏CLOCKS_PER_SEC,用来计算时间 |
这个OS所在的CPU结构,是一个无符号整型数 |
3 |
time_t |
seconds since the Epoch(1970-1-1 00:00:00 UTC) |
是一个无符号整型数 |
4 |
struct tm |
用来保存时间和日期 |
见下面 |
tm结构定义如下:
struct tm
{
int tm_sec; //seconds,[0-59]
int tm_min; //minutes,[0-59]
int tm_hour; //hours,[0-23]
int tm_mday; //day,[1-31]
int tm_mon; //month,[0-11],这个要注意月份是从零开始的
int tm_year; //now year - 1900,这是从1900年开始减的,而不是从1970开始的
int tm_wday; //day of week.[0-6],星期数是从0开始的
int tm_yday; //days in year.[0-365]
int tm_isdst //是不是夏时令
}
宏
序号 |
宏 |
描述 |
1 |
NULL |
空指针的常量值 |
2 |
CLOCKS_PER_SEC |
一秒钟有多少ticks |
函数
序号 |
函数 |
描述 |
线程安全 |
1 |
time_t time(time_t *seconds) |
返回自1970-01-01 00:00:00 UTC到现在,共过了多少秒(calendar seconds)。常配合difftime函数用来计算时间差 |
|
2 |
double difftime(time_t time1,time_t time0) |
得到time1-time0的秒差 |
是 |
3 |
char* ctime(const time_t *p_time) |
将得到秒数转换为日历字符串(calendar string),本地时区 |
否 |
4 |
char* ctime_r(const time_t *p_time, char *buf) |
将得到秒数转换为日历字符串(calendar string),本地时区 |
是 |
5 |
struct tm* gmtime(const time_t *timer) |
用秒数值计算出tm中的各个值,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。 |
否 |
6 |
struct tm* gmtime_r(const time_t *timer, struct tm *result) |
用秒数值计算出tm中的各个值,采用协调世界时(UTC)也被称为格林尼治标准时间(GMT)时区。 |
是 |
7 |
struct tm* localtime(const time_t* timer) |
用秒数值计算出tm中的各个值,采用本地时区 |
否 |
8 |
struct tm* localtime_r(const time_t* timer, struct tm *result) |
用秒数值计算出tm中的各个值,采用本地时区 |
是 |
9 |
char* asctime(const struct tm* timeptr) |
将tm结构体的内容转为字符串 |
否 |
10 |
char* asctime_r(const struct tm* timeptr, char buf[]) |
将tm结构体的内容转为字符串 |
是 |
11 |
time_t mktime(struct tm* timeptr) |
由tm结构体计算出一个本地时区calendar seconds |
是 |
12 |
size_t strftime(char* str,size_t maxsize,const char* format,const struct tm* timeptr) |
由tm结构体,按指定格式format生成字符串 |
是 |
13 |
clock_t clock(void) |
获得CPU的运行ticks,若想得到运行时间,就要除以CLOCKS_PER_SEC |
是 |
使用关系总结