目录
1 数据类型
1.1 time_t
1.2 tm
1.3 clock_t
2 相关知识
3 获取从1970年1月1日以来的UTC秒数 time()
4 获取本时区时间字符串 ctime()
5 获取GMT时间的tm gmttime()
6 获取本地时间的tm localtime()
7 记录当前毫秒数 clock()
8 将表示本地时间的tm转换为time_t mktime()
9 将tm转换为字符串形式 asctime()
10 两个time_t的差值 difftime()
11 将tm转换为字符串 strftime()
1 数据类型
1.1 time_t
time_t可以视作为长整型(long),导入time.h库会自动定义这个变量名
1.2 tm
tm是有如下属性的结构体,导入time.h库会自动定义这个变量名
- 参考 c语言中tm与time_t两种时间格式的转换_time_t转tm_网格小生的博客-CSDN博客
struct tm {
int tm_sec; /* 秒,取值区间为[0,59] */
int tm_min; /* 分,取值区间为[0,59] */
int tm_hour; /* 时,取值区间为[0,23] */
int tm_mday; /* 一个月中的日期,取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月),取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期,取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数,取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};
我们通常可以用下面这组字符串打印出tm
printf("%04d-%02d-%02d %02d:%02d:%02d\n",local_time->tm_year + 1900, local_time->tm_mon + 1, local_time->tm_mday, local_time->tm_hour, local_time->tm_min, local_time->tm_sec);
打印后的格式是这样的
1.3 clock_t
clock_t可以视作为长整型(long),导入time.h库会自动定义这个变量名
2 相关知识
- GMT与UTC时间类似
- GMT与中国差8个时区,所以时间也会差8个小时
3 获取从1970年1月1日以来的UTC秒数 time()
4 获取本时区时间字符串 ctime()
5 获取GMT时间的tm gmttime()
gmttime()的返回值是tm,我们可以把tm格式化成我们想看的格式
GMT是0时区,中国是东8区,所以会相差8个小时
6 获取本地时间的tm localtime()
7 记录当前毫秒数 clock()
运行后我等待5秒左右,然后睡3秒,之后会显示从开始到end_time的clock()运行了3002毫秒
8 将表示本地时间的tm转换为time_t mktime()
9 将tm转换为字符串形式 asctime()
10 两个time_t的差值 difftime()
这里你直接相减效果也差不多
11 将tm转换为字符串 strftime()
strftime()的第一个参数是存在哪个变量中
第二个参数是变量的最大长度,一般我们使用sizeof(变量名)就行了
第三个参数是要格式化成什么样子的字符串
第四个参数是时间的tm