前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C语言实例_time.h库函数功能及其用法详解

C语言实例_time.h库函数功能及其用法详解

作者头像
DS小龙哥
发布于 2023-12-30 00:39:56
发布于 2023-12-30 00:39:56
97600
代码可运行
举报
运行总次数:0
代码可运行

一、前言

时间在计算机编程中扮演着重要的角色,C语言的time.h头文件提供了一系列的函数和工具,用于处理时间和日期相关的操作。这些函数包括获取当前时间、日期格式化、时间间隔计算等功能,为开发人员提供了强大的时间处理能力。本文将对time.h头文件中的所有函数进行全面介绍,包括功能和使用方法,以帮助大家更好地理解和利用该头文件。

二、函数介绍

在 C 语言中,time.h 头文件提供了与时间和日期相关的函数和数据类型。

下面是头文件中常用的函数和数据类型及其功能的详细介绍:

【1】time_t time(time_t *timer):

功能:获取当前系统时间,并将其表示为从1970年1月1日至今的秒数。 参数:timer 是一个指向 time_t 类型对象的指针,用于存储获取到的时间。 返回值:返回表示当前时间的 time_t 类型对象,如果出错,则返回 -1。

【2】double difftime(time_t time1, time_t time2):

功能:计算两个时间之间的差值(以秒为单位)。 参数:time1 和 time2 是两个 time_t 类型的时间。 返回值:返回 time1 - time2 的结果,以 double 类型表示。

【3】char ctime(const time_t **timer):

功能:将 time_t 类型的时间转换为字符串,表示为本地时间格式。 参数:timer 是一个指向 time_t 类型对象的指针,表示要转换的时间。 返回值:返回一个指向包含日期和时间信息的字符串的指针。

【4】struct tm localtime(const time_t** timer):

功能:将 time_t 类型的时间转换为本地时间。 参数:timer 是一个指向 time_t 类型对象的指针,表示要转换的时间。 返回值:返回一个指向 struct tm 结构体的指针,其中包含了转换后的本地时间信息。

【5】struct tm gmtime(const time_t **timer):

功能:将 time_t 类型的时间转换为格林尼治标准时间(GMT)。 参数:timer 是一个指向 time_t 类型对象的指针,表示要转换的时间。 返回值:返回一个指向 struct tm 结构体的指针,其中包含了转换后的 GMT 时间信息。

【6】time_t mktime(struct tm*timeptr):

功能:将 struct tm 结构体表示的时间转换为 time_t 类型。 参数:timeptr 是一个指向 struct tm 结构体的指针,表示要转换的时间。 返回值:返回一个 time_t 类型的对象,表示转换后的时间。

【7】size_t strftime(char str, size_t maxsize, const char format, const struct tm* timeptr)、:

功能:将日期和时间按照指定格式输出到字符串中。 参数:str 是一个指向字符数组的指针,用于存储输出的字符串;maxsize 是 str 的大小限制;format 是一个指向以 % 字符开头的格式字符串;timeptr 是一个指向 struct tm 结构体的指针,表示要格式化的时间。 返回值:返回实际写入字符串的字符数。

除了上述函数,time.h 头文件还定义了以下数据类型:

time_t:表示从 1970 年 1 月 1 日开始计算的秒数。 struct tm:表示日期和时间的结构体,包含年、月、日、时、分、秒等信息。

三、用法示例

【1】time_t time(time_t* timer)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    printf("Current time: %ld\n", current_time);

    return 0;
}

【2】double difftime(time_t time1, time_t time2)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    time_t start_time, end_time;
    double elapsed_time;

    time(&start_time);
    // Some time-consuming task
    time(&end_time);

    elapsed_time = difftime(end_time, start_time);
    printf("Elapsed time: %.2f seconds\n", elapsed_time);

    return 0;
}

【2】char* ctime(const time_t timer)*:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    char* time_string = ctime(&current_time);
    printf("Current time: %s", time_string);

    return 0;
}

【3】struct tm* localtime(const time_t timer)*:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    struct tm* local_time = localtime(&current_time);
    printf("Current local time: %s", asctime(local_time));

    return 0;
}

【4】struct tm* gmtime(const time_t timer)*:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    struct tm* gm_time = gmtime(&current_time);
    printf("Current GMT time: %s", asctime(gm_time));

    return 0;
}

【5】time_t mktime(struct tm* timeptr)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    struct tm date;
    time_t t;

    date.tm_sec = 0;
    date.tm_min = 0;
    date.tm_hour = 0;
    date.tm_mday = 16;
    date.tm_mon = 7; // August (months are 0-based)
    date.tm_year = 123; // 2023 (years are counted from 1900)

    t = mktime(&date);

    printf("Time in seconds since 1970: %ld\n", t);

    return 0;
}

【6】size_t strftime(char* str, size_t maxsize, const char format, const struct tm timeptr)**:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <time.h>

int main() {
    time_t current_time;
    time(&current_time);

    struct tm* local_time = localtime(&current_time);

    char str[100];
    size_t maxsize = sizeof(str);
    const char* format = "%Y-%m-%d %H:%M:%S";
  
    strftime(str, maxsize, format, local_time);

    printf("Formatted time: %s\n", str);

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
STM32+ESP8266+MQTT协议连接OneNet物联网平台
上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。
DS小龙哥
2022/01/10
6.4K0
STM32+ESP8266+MQTT协议连接OneNet物联网平台
基于STM32动态密码锁(手机APP)_2022
前一版设计了一款物联网的密码锁,采用MQTT协议连接物联网服务器进行交互,这一版是本地动态密码锁。采用局域网方式完成网络连接,与门锁进行交互,通信设置,生成密码种子,进行动态密匙比对。 这款智能电子密码锁,以STM32单片机为主控制器,由触摸矩阵键盘、ESP8266、步进电机等模块组成,具有手机APP控制、随机密码生成等功能。
DS小龙哥
2022/09/23
1K0
基于STM32动态密码锁(手机APP)_2022
STM32设计的物联网智能鱼缸
随着人们生活水平的提高,家居环境中的绿色生态和健康生活越来越受到重视。鱼缸作为家居装饰的一部分,不仅需要美观,还需要关注鱼儿的健康和生存环境。为了满足这一需求,当前设计了基于STM32的智能鱼缸系统。
屿小夏
2024/11/01
4961
STM32设计的物联网智能鱼缸
基于STM32的智能鱼缸设计
为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼乐趣;为此,本文基于STM32单片机设计了一款智能鱼缸。该鱼缸可以实现水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能为一体的控制系统,可通过控制键进行一键控制。
DS小龙哥
2022/09/16
3.6K0
基于STM32的智能鱼缸设计
基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)
手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)
DS小龙哥
2022/01/12
1.8K0
基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)
基于STM32设计的宠物投喂器
随着物联网技术的快速发展,智能家居已经进入人们的日常生活中,在政策加持的背景下,智能家居企业越来越关注相关技术的研发和应用;但是市场上的宠物投喂装置已经难以满足宠物主人的需求。文章介绍的宠物智能投喂装置是以STM32为核心,多个模块协调配合,共同完成针对不同年龄段的宠物进行定时定量投喂及实时环境监测与高温报警、以及主人随时可以通过智能设备了解宠物生活环境、为宠物加餐等功能。该系统的功能完善、价格低廉,使用方便,解决了宠物饲养者外出时的后顾之忧,还能保证宠物的进食有一定的规律性。
DS小龙哥
2022/06/28
2.2K1
基于STM32设计的宠物投喂器
基于STM32设计的智能插座+人体感应灯(ESP8266+人体感应+手机APP)
手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)
DS小龙哥
2022/01/12
2.8K0
基于STM32设计的智能插座+人体感应灯(ESP8266+人体感应+手机APP)
基于stm32的室内环境监测系统设计及实现_毕业设计怎么做
这是本科时的毕业设计,想着之后读研了,研究方向是机器学习了,可能不会这么再碰32或者51之类的板子了,就想趁着还没有忘记就来梳理一下,纪念陪伴了我两年的硬件朋友们,也作为一个足迹。
全栈程序员站长
2022/09/27
3K0
基于stm32的室内环境监测系统设计及实现_毕业设计怎么做
基于STM32设计的实时心率检测仪
与上位机的传输协议: 支持串口传输、WIFI网络传输两种。 如果是PC就可以直接连接串口传输数据,如果不方便可以直接通过WIFI---TCP协议传输。
DS小龙哥
2022/01/12
2.1K0
基于STM32设计的实时心率检测仪
智慧农业: STM32F103ZE+ESP8266+腾讯云物联网平台+微信小程序设计
上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。
DS小龙哥
2022/01/10
2.2K0
智慧农业: STM32F103ZE+ESP8266+腾讯云物联网平台+微信小程序设计
基于STM32设计的WiFi语音播报日程表
近年来,随着电子产品的发展,数字日程表这项应用在人们工作和生活中起到越来越重要的作用。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,遇上重要事务,一时的耽误可能酿成大祸。
DS小龙哥
2022/09/08
5090
基于STM32设计的WiFi语音播报日程表
【论文复现】STM32设计的物联网智能鱼缸
随着居民生活品质的提升,家居空间内的绿色生态理念与健康生活方式日益受到人们的青睐。鱼缸,作为家居美化的一环,不仅要求外观雅致,更需兼顾鱼类的健康及其所居环境的优劣。为此,一款基于STM32技术的智能鱼缸系统应运而生。
Eternity._
2024/11/18
4620
【论文复现】STM32设计的物联网智能鱼缸
基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)
上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。
DS小龙哥
2022/01/12
4.3K0
基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)
基于STM32无人超市消费系统设计
针对传统超市购物车结账排队时间长、付款效率低的问题,提出了一种更符合现代社会人们购物方式-基于RFID的自助收银系统。习惯了快节奏生活的人们都会选择自助收银机结账,理由显而易见:自助收银机结账很方便,几乎不用排队,也不用近距离和收银员接触,在防疫时期特别感觉安心。而且自助结账对每件物品的售价更是一次清晰地核对,最终需支付合计购物支出自己也更加清晰明了;这两年来,越来越多的智能设备应用在我们的生活领域里,为我们的生活提供了很多智能和便利。自助收银机从几年前就陆续涌入到各地商场、超市、便利店,自去年疫情发生后自助收银的需求比例更是呈直线上升趋势。自助收银机的启用,不仅节约了超市的人力开支成本,也从根本上提升了超市的购物支付效率,在这个快节奏的社会里,智能自助收银机也从根本上提升了超市等购物场所的服务质量。
DS小龙哥
2022/09/16
2.6K0
基于STM32无人超市消费系统设计
基于STM32单片机设计指纹考勤机+上位机管理
随着信息科学技术的不断进步,信息科学技术已进入到了当今生活的方方面面,尤其是每个行业的经管领域,这类智能化信息技术处理是提高效率、从严管制、公平审查较为有效的方法。考勤登记,作为企业职工的基本管理,是对职工每日出勤管理的根本根据。但是,目前我国绝大多数企业在考勤登记时,依然利用的是古板的考勤方法,比如: 人工注册、打卡、机器打卡等,不光考勤速度较为缓慢,并且在考勤登记时候要专门职员在一边进行记载、统计数据、制成EXCEL表,而报表做完后最终交到主管手里时,有时候时间已过了好几天,根本不行,也不可以施展考勤真实的监视作用。并且还有可能呈现考勤数据不准确,考勤职员纪录犯错,乃至卖弄虚假的这种现象,极度破坏了企业对职工的日常管制。如今使用电脑来管制考勤的事情,很大程度上降低了就业人员的任务量,促使作事效率得以升高,使本来繁杂、索然无味的工作变的简单。提高中小型企业的考勤效率、体现现代化考勤的气氛。
DS小龙哥
2022/09/20
2.4K0
基于STM32单片机设计指纹考勤机+上位机管理
基于uFUN开发板和扩展板的联网校准时钟
上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种小设计应该说是烂大街了吧!我一开始学习51的时候做了个可按键校准,带闹钟功能的时钟,学习STM32的时候做。了个可以手机蓝牙APP校准的时钟,现在又用uFUN开发板做了个时钟,不过时钟这个的英文联网校准的由于之前做过桌面天气预报时钟,如下图:
单片机点灯小能手
2020/07/16
9710
基于STM32设计的车库监控报警系统
随着社会的发展,人们的生活水平不断提高对安防问题的关注度越来越高,因而各类防盗设备也层出不穷,本文采用红外测距传感器、摄像头、STM32单片机以及ESP8266无线通信模块设计一种车库防盗报警器,其可安装在车库的里,通过红外线测距检测是否有人入侵,产生报警信号,提醒相关人员采取应急防御措施。该防盗报警器成本低,功能优,防盗效果好,是家居防盗的优良选择。
DS小龙哥
2022/09/08
1.1K0
基于STM32设计的车库监控报警系统
还不会OTA升级?手把手教你基于STM32的BootLoader的OTA远程升级
上次发过SD卡的Bootloader离线升级后,应大家的要求,这次就讲一下STM32的OTA远程升级。 OTA又叫空中下载技术,是通过移动通信的空中接口实现对移动终端设备数据进行远程管理的技术,还能提供移动化的新业务下载功能。 要实现OTA功能,至少需要两块设备,分别是服务器与客户端。服务器只有一个,客户端可有多个。服务器通过串口与PC机连接,需要下载的镜像文件存放于PC机,命令执行器给服务器发命令及镜像文件。首先命令执行器控制服务器广播当前可用的镜像文件信息,客户端收到信息后进行对比,若有与自身相匹配的镜像,则向服务器请求数据。服务器收到请求后向命令执行器索取固定大小的块,再点对点传送给客户端。镜像传输完毕后,客户端进行校验,完成后发送终止信号。 一. 升级方式的对比
MCU起航
2021/09/03
3.4K0
还不会OTA升级?手把手教你基于STM32的BootLoader的OTA远程升级
基于STM32+ESP8266设计物联网产品(重点:支持微信小程序一键配网连接腾讯云平台)
完整项目源码下载地址:https://download.csdn.net/download/xiaolong1126626497/19137788
DS小龙哥
2022/01/12
2.5K0
基于STM32+ESP8266设计物联网产品(重点:支持微信小程序一键配网连接腾讯云平台)
基于STM32F103设计的智能门锁(支持多种开锁解锁方式)
完整项目源码下载地址: https://download.csdn.net/download/xiaolong1126626497/19101807
DS小龙哥
2022/01/12
3.1K0
基于STM32F103设计的智能门锁(支持多种开锁解锁方式)
推荐阅读
相关推荐
STM32+ESP8266+MQTT协议连接OneNet物联网平台
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档