当前位置: 首页 > news >正文

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

目录

引言

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.变量 & 描述说明
1CLOCKS_PER_SEC每秒的时钟周期数。
2NULL空指针常量。
3TIME_UTC表示 UTC 时间(C11)。

5.3 库变量

<time.h> 中定义的变量类型
N0.变量 & 描述
1size_t
是无符号整数类型,它是 sizeof 关键字的结果。
2clock_t
这是一个适合存储处理器时间的类型。
3time_t is
这是一个适合存储日历时间的类型。
4struct 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.宏 & 描述
1NULL
这个宏是一个空指针常量的值。
2CLOCKS_PER_SEC
这个宏表示每秒的处理器时钟个数。

5.5 库函数

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

5.6 注意事项

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

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

相关文章:

  • 使用fastapi搭建ChatGPT对话后台
  • 前端规范工程-5:Git提交信息规范(commitlint + czg)
  • 企业数据安全从0到1建设方法
  • sql server每天定时执行sql语句
  • RabbitMQ 界面管理说明
  • 【Orange Pi 5嵌入式应用编程】-用户空间GPIO控制
  • Lenovo SR850服务器亮黄灯维修和升级CPU扩展模块
  • qt使用QDomDocument读写xml文件
  • SpringBoot 流式输出时,正常输出后为何突然报错?
  • 《Windows PE》3.2.3 NT头-扩展头
  • Vscode、小皮面板安装
  • 智能招聘系统小程序的设计
  • OpenCL 学习(1)---- OpenCL 基本概念
  • PGMP-03战略一致性
  • 解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【面试系列】之二:关于js原型
  • 2017年终总结、随想
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android组件 - 收藏集 - 掘金
  • IOS评论框不贴底(ios12新bug)
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • js递归,无限分级树形折叠菜单
  • PAT A1092
  • Vue2.0 实现互斥
  • webpack4 一点通
  • 仿天猫超市收藏抛物线动画工具库
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 近期前端发展计划
  • 强力优化Rancher k8s中国区的使用体验
  • 悄悄地说一个bug
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 跳前端坑前,先看看这个!!
  • 责任链模式的两种实现
  • 正则学习笔记
  • 转载:[译] 内容加速黑科技趣谈
  • 《天龙八部3D》Unity技术方案揭秘
  • 【干货分享】dos命令大全
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • # linux从入门到精通(三)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (23)mysql中mysqldump备份数据库
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C++)八皇后问题
  • (done) 两个矩阵 “相似” 是什么意思?
  • (JS基础)String 类型
  • (第一天)包装对象、作用域、创建对象
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (三)uboot源码分析
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world