头文件:#include
基础知识:
日历时间,即机器时,1970年之后的秒数
UTC,GMT,世界标准时间(经度0),中国是UTC+8
epoch:时间点,当前机器时
clock tick:时钟计时单元,一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位(单位为毫秒)
计时:clock_t clock( void ),返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数;CLOCKS_PER_SEC,它表示一秒钟会有多少个时钟计时单元。clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间。
clock_t是long型
类型:
time_t长整型long
分解时间
struct tm{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
函数
time函数:time_t time(time_t *t);得到现在的机器时(秒数)
获得日期和时间:
gmtime函数 struct tm *gmtime(time_t *time) ,从机器时得到 tm结构的世界时(UTC或GMT)(tm_year减去了1990)
mktime函数:time_t mktime(struct tm * timeptr);gmtime函数的逆函数,把分解时间转化为日历时间
localtime函数:struct tm *localtime(const time_t *timer) ,从机器时得到本地时间(北京UTC-8)(tm_year减去了1990)
获取字符串时间要先调用gmtime或localtime返回tm格式再调用该函数转换为char*类型
ctime函数:char *ctime(long time) 从机器时得到世界时,字符串格式:星期,月,日,小时:分:秒,年
asctime 函数:char* asctime(struct tm * ptr) :从世界时得到机器时,输入参数从localtime()或者gmtime()得到
difftime函数:double difftime(time_t time2, time_t time1) ,得到两次机器时时间差
自定义时间格式:时间格式控制函数(strftime将一个tm结构格式化为一个字符串,strptime则是将一个字符串格式化为一个tm结构)字符串和结构体tm类型之间的转换
strftime函数:有些类似于sprintf(),按照格式字符串 format
,转换来自给定的日历时间 time
的日期和时间信息,为空终止多字节字符串 str
。最多写入 count
字节
同样要通过localtime或gmtime函数返回tm结构体
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
strptime函数,是strftime的逆函数,将一个字符串格式化为一个tm结构。返回的是一个字符指针,指向转换过程处理的最后一个字符后面的那个字符。
char *strptime(const char *buf,const char *format,struct tm *timeptr)