时间类
简介
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 | 是 |