附录12-time.h的常用方法

目录

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()

附录12-time.h的常用方法_第1张图片

4  获取本时区时间字符串 ctime()

附录12-time.h的常用方法_第2张图片

5  获取GMT时间的tm gmttime()

gmttime()的返回值是tm,我们可以把tm格式化成我们想看的格式

附录12-time.h的常用方法_第3张图片

GMT是0时区,中国是东8区,所以会相差8个小时

6  获取本地时间的tm localtime()

附录12-time.h的常用方法_第4张图片

7  记录当前毫秒数 clock()

附录12-time.h的常用方法_第5张图片

运行后我等待5秒左右,然后睡3秒,之后会显示从开始到end_time的clock()运行了3002毫秒

8  将表示本地时间的tm转换为time_t mktime()

附录12-time.h的常用方法_第6张图片

9  将tm转换为字符串形式 asctime()

附录12-time.h的常用方法_第7张图片

10  两个time_t的差值 difftime()

附录12-time.h的常用方法_第8张图片

这里你直接相减效果也差不多

附录12-time.h的常用方法_第9张图片

11  将tm转换为字符串 strftime()

附录12-time.h的常用方法_第10张图片

strftime()的第一个参数是存在哪个变量中

第二个参数是变量的最大长度,一般我们使用sizeof(变量名)就行了

第三个参数是要格式化成什么样子的字符串

第四个参数是时间的tm

你可能感兴趣的:(C语言笔记,c语言)