一、重要的宏:
CLOCKS_PER_SEC:每秒钟的滴答数
clock_t:滴答计数类型
time_t:日历时间的秒计数
二、重要数据类型:
struct tm:年月日等得细分时间数据结构
三、全部函数:
clock_t clock( void );
返回本程序自启动来,流逝的时钟滴答数。
double difftime( time_t timer1,time_t timer0 );
返回两个日历时间之差timer1-timer0;
time_t time( time_t *timer );
返回自1970年1月1日0辰以来流逝的秒数,出错返回-1;
如果,timer不为空,则同时将返回值赋给timer指向的变量。
time_t mktime(struct tm *timeptr );
将由年月日时分秒等构成的细分时间转换为流逝秒数构成的日历时间。
struct tm *localtime(const time_t *timer);
将日历时间转换为本地细分时间
struct tm *gmtime( const time_t *timer);
将日历时间转换为UTC(世界协调时间)的细分时间
(注意: localtime与gmtime,前者比后者多8个小时)
char *asctime( const struct tm *timeptr );
将细分时间转换为简写字符串
char *ctime( const time_t *timer );
将日历时间转换为简写字符串
size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );
将细分时间按format的格式要求格式化到strDest指向的缓冲区
重要函数关系图:
说明:细分时间:指由年月日、时分秒等组成的结构体所表示的时间
日历时间:指自1970年1月1日凌晨开始逝去的秒数
struct tm
{
int tm_hour; //时 0~23
int tm_isdst; //夏令时是否开启 开启(> 0),关闭(= 0),未知(< 0)
int tm_mday; //日 0~31
int tm_min; //分 0~59
int tm_mon; //月 0~11
int tm_sec; //秒 0~60(60为天文学中定义的闰秒)
int tm_wday; //星期,从星期天计 0~6
int tm_yday; //本年经过的天数 0~365
int tm_year; //从1900年起经过的年数
};
struct tm* gmtime(const time_t* timer); //从日历时间time_t到分解时间tm的转换。函数返回的是一个静态分配的tm结构存储空间,该存储空间被gmtime,localtime与ctime函数所共用. 这些函数的每一次调用会覆盖这块tm结构存储空间的内容。
struct tm* gmtime_r(const time_t* timer , struct tm*result); //该函数是gmtime函数的线程安全版本
struct tm* localtime(const time_t* timer); //从日历时间time_t到分解时间tm的转换,即结果数据已经调整到本地时区与夏令时。
time_t mktime(struct tm* ptm); //从分解时间tm到日历时间time_t的转换。
time_t timegm(struct tm* brokentime); //从分解时间tm(被视作UTC时间,不考虑本地时区设置)到日历时间time_t的转换。该函数较少被使用。
double difftime(time_t timer2, time_t timer1); //比较两个日历时间,返回double类型的秒数差。似乎用处不大,time_t可以直接相减
以下是几个把日期数据按常用格式输出的函数:
char *asctime(const struct tm* tmptr); //把分解时间tm输出到字符串,结果的格式为"Www Mmm dd hh:mm:ss yyyy",即“周几 月份数 日数 小时数:分钟数:秒钟数 年份数”。函数返回的字符串为静态分配,长度不大于26,与ctime函数共用。函数的每次调用将覆盖该字符串内容。
char* ctime(const time_t* timer); //把日历时间time_t timer输出到字符串,输出格式与asctime函数一样。
size_t strftime(char* s, size_t n, const char* format, const struct tm* tptr); //把分解时间tm转换为自定义格式的字符串,类似于常见的字符串格式输出函数sprintf。
char * strptime(const char* buf, const char* format, struct tm* tptr); //strftime的逆操作,把字符串按照自定义的格式转换为分解时间tm。恩恩……这个函数还是比较有意思的。