C语言常用标准库 -- 5.<time.h>

时间:2024-10-01 12:00:01

目录

引言

5. C标准库--time.h

5.1 简介

5.2 常量与宏

5.3 库变量

5.4 库宏

5.5 库函数

5.6 注意事项


????你好呀!我是 程序猿

???? 2024感谢你的陪伴与支持 ~

???? 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!


引言

        C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。

        C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。

        C 标准库(C Standard Library)包含了一组头文件,这些头文件提供了许多函数和宏,用于处理输入输出、字符串操作、数学计算、内存管理等常见编程任务。

5. C标准库--time.h

5.1 简介

      time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。

<time.h> 是 C 标准库中的一个头文件,提供了处理和操作日期和时间的函数和类型。这个头文件中的函数用于获取当前时间、设置时间、格式化时间和计算时间差等。

      通过理解和使用 <time.h> 提供的函数,可以方便地进行时间和日期的操作,从而编写更加功能丰富和高效的 C 程序。

5.2 常量与宏

<time.h> 中的常量与宏
N0. 变量 & 描述 说明
1 CLOCKS_PER_SEC 每秒的时钟周期数。
2 NULL 空指针常量。
3 TIME_UTC 表示 UTC 时间(C11)。

5.3 库变量

<time.h> 中定义的变量类型
N0. 变量 & 描述
1 size_t
是无符号整数类型,它是 sizeof 关键字的结果。
2 clock_t
这是一个适合存储处理器时间的类型。
3 time_t is
这是一个适合存储日历时间的类型。
4 struct tm
这是一个用来保存时间和日期的结构。

// tm 结构的定义如下:
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 到 1             */
   int tm_year;        /* 自 1900 年起的年数            */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6  */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365*/
   int tm_isdst;       /* 夏令时                        */
};

5.4 库宏

<time.h> 中定义的宏
N0. 宏 & 描述
1 NULL
这个宏是一个空指针常量的值。
2 CLOCKS_PER_SEC
这个宏表示每秒的处理器时钟个数。

5.5 库函数

<time.h> 中定义的库函数
N0. 函数 & 描述
1 char *asctime(const struct tm *timeptr)
返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
2 clock_t clock(void)
返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。
3 char *ctime(const time_t *timer)
返回一个表示当地时间的字符串,当地时间是基于参数 timer。
4 double difftime(time_t time1, time_t time2)
返回 time1 和 time2 之间相差的秒数 (time1-time2)。
5 struct tm *gmtime(const time_t *timer)
timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
6 struct tm *localtime(const time_t *timer)
timer 的值被分解为 tm 结构,并用本地时区表示。
7 time_t mktime(struct tm *timeptr)
把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。
8 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。
9 time_t time(time_t *timer)
计算当前日历时间,并把它编码成 time_t 格式。
10 int timespec_get(struct timespec *ts, int base);
获取当前时间(C11)。

5.6 注意事项

  1. 使用 localtime 和 gmtime 时,返回的指针指向的 struct tm 结构是静态存储的,每次调用会覆盖之前的内容。
  2. 使用 mktime 函数时,必须确保 struct tm 中的各个字段是合法的。
  3. 使用 strftime 函数进行时间格式化时,要确保目标缓冲区足够大,以避免缓冲区溢出。

  ​期待批评指正,共同进步~