Day4-C语言计时器
目录
- C语言计时器
- 1. 休眠函数计时器
- Sleep函数
- 2. C 标准库 <time.h>
- time函数
- localtime函数
- asctime函数
- mktime函数
- difftime函数
- 时间:2021年7月20日23:34:30
C语言计时器
1. 休眠函数计时器
Sleep函数
可以使计算机程序(进程,任务或线程)进入休眠, 当函数设定的计时器到期,或者接收到信号、程序发生中断都会导致程序继续执行。
0timeSecond.c
#include <stdio.h>
#include <windows.h>
/*** @brief 一个秒级计时器(1s == 1000ms)*/
int main()
{int m, s; //minute,secondfor (int m = 0; m < 60; m++){for (int s = 0; s < 60; s++){Sleep(1000);//休眠函数,参数以ms为单位.此处休眠1sprintf("%d%d:%d%d\b\b\b\b\b", m / 10, m % 10, s / 10, s % 10);//此处\b代表退格键.}}return 0;
}
2. C 标准库 <time.h>
time函数
返回值是从1970-01-01距今的时间,以s为单位.类型为time_t.
time_t time(time_t *t)//time_t是一个适合存储日历时间类型。实际上time_t是长整型
time1.c
#include <stdio.h>
#include <time.h>int main()
{//声明当前时间变量time_t now;//获取当前时间time(&now); //等价于now = time(NULL); printf("自 1970-01-01 起的小时数 = %ld\n", now / 3600);return (0);
}
运行结果:
自 1970-01-01 起的小时数 = 451880
localtime函数
struct tm *localtime(const time_t *timer)
//返回指向 tm 结构的指针,并用本地时区表示
time2.c
#include <stdio.h>
#include <time.h>int main()
{time_t now;struct tm *info;time(&now);//转换为本地时区info = localtime(&now);// 秒 分 时 天(月) 月 年 星期 天(年)int s, min, h, md, m, y, wd, yd;s = info->tm_sec;min = info->tm_min;h = info->tm_hour;md = info->tm_mday;m = info->tm_mon + 1; //[0,11]y = info->tm_year + 1900; //距离1900多少年wd = info->tm_wday;yd = info->tm_yday;printf("周%d, %d月%d日 %d:%d:%d %d年\n", wd, m, md, h, min, s, y);printf(" %s\n", asctime(info)); //返回一个 C 字符串,包含了可读格式的日期和时间信息return (0);
}
运行结果:
周2, 7月20日 17:4:13 2021年Tue Jul 20 17:04:13 2021
asctime函数
char *asctime(const struct tm *timeptr)
//返回一个 C 字符串,包含了可读格式的日期和时间信息
//格式:Www Mmm dd hh:mm:ss yyyy,其中,星期几, 月, 日, hh:mm:ss时间, yyyy 表示年份。
time3.c
#include <stdio.h>
#include <time.h>int main()
{time_t now;struct tm *info;time(&now);info = localtime(&now); printf(" %s\n", asctime(info));//返回一个 C 字符串,包含了可读格式的日期和时间信息return (0);
}
mktime函数
返回一个 time_t 值,该值对应于以参数传递的日历时间
time_t mktime(struct tm *timeptr)//mktime()将指定的时间变成与time()同格式:变成从1900-1-1距今的时间,以s为单位
time4.c
#include <stdio.h>
#include <time.h>
#include <windows.h>//作用:将给定的 年月日时分秒 转化为和 函数time() 的返回值 相同
time_t convert(int y, int m, int d, int h, int min, int s)
{struct tm info;info.tm_year = y - 1900;info.tm_mon = m - 1;info.tm_mday = d;info.tm_hour = h;info.tm_min = min;info.tm_sec = s;return mktime(&info);
}int main()
{time_t t = convert(2021, 7, 20, 20, 58, 59); //这个时间是我写这个代码的时刻int time;printf("输入时间:");scanf("%ld", &time);for (int i = 0; i < time; i++){Sleep(1000);//休眠1st++;struct tm *info = localtime(&t);printf("%d-%d-%d, %d:%d:%d\n", info->tm_year + 1900, info->tm_mon + 1, info->tm_mday, info->tm_hour, info->tm_min, info->tm_sec);printf("%s\n", asctime(info));}return 0;
}
输入:
3
运行结果:
2021-7-20, 20:59:0
Tue Jul 20 20:59:00 20212021-7-20, 20:59:1
Tue Jul 20 20:59:01 20212021-7-20, 20:59:2
Tue Jul 20 20:59:02 2021
localtime函数将time_t转化为struct tm ,mktime则相反.
difftime函数
返回以双精度浮点型 double 值表示的两个时间之间相差的秒数 (time1 - time2)。
double difftime(time_t time1, time_t time2)
//两个参数分别是被减数 减数
time5.c
#include <stdio.h>
#include <time.h>
#include <windows.h>
/*** @brief 定时提醒* 输入 年月日,时分秒* 输入时间要比现在时间只早不晚,否则报错、重输* * * */
//作用:将给定的 年月日时分秒 转化为和 函数time() 的返回值 相同
time_t convert(int y, int m, int d, int h, int min, int s)
{time_t nowTime, userTime;//现在时间,用户输入时间struct tm nowInfo, userInfo; //同上time(&nowTime);//获取此刻时间userInfo.tm_year = y - 1900;userInfo.tm_mon = m - 1;userInfo.tm_mday = d;userInfo.tm_hour = h;userInfo.tm_min = min;userInfo.tm_sec = s;userTime = mktime(&userInfo);double res = difftime(userTime, nowTime);if(res > 0){return res;}return -1;
}int main()
{time_t t;int y, m, d, h, min, s;printf("程序启动...\n\n");printf("请您输入提醒时间:\n");printf("Please enter the reminder time:\n");do{printf("年:");scanf("%d", &y);printf("\n月:");scanf("%d", &m);printf("\n日:");scanf("%d", &d);printf("\n时:");scanf("%d", &h);printf("\n分:");scanf("%d", &min);printf("\n秒:");scanf("%d", &s);t = convert(y, m, d, h, min, s); if(t == -1) printf("输入时间错误,请重新输入...\n");}while(t == -1);// int j=0;for (int i = 0; i < t; i++){Sleep(1000); //休眠1s// printf("%d\n",j++);}while(1)Beep(523,00); return 0;
}
时间:2021年7月20日23:34:30
Day4-C语言计时器相关推荐
- Go语言计时器的使用详解
Go语言计时器 Go语言的标准库里提供两种类型的计时器Timer和Ticker.Timer经过指定的duration时间后被触发,往自己的时间channel发送当前时间,此后Timer不再计时.Tic ...
- 【Day4 C语言基础语法学习-3】
Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...
- step1 . day4 C语言基础练习之日历
学习完基础循环.选择语句,写一个日历检验水准. 日历核心: 1.选择基础参照,用来计算总天数和周几的参照(since 1900.1.1,这天是周一) 2.闰年平年的判断条件及循环结构 3.计算需要打印 ...
- C语言 计时器的实现(利用系统55ms中断计时)
//利用系统55ms中断,显示时间 //作者:nuaazdh //时间:2011年11月30日 #include <stdio.h> #include <dos.h> #inc ...
- golang sqlx scan 到结构体中_Golang语言并发编程之定时器
上一章中对于golang的常用关键字说明如下: 1 for 和 range 2 select 3 defer 4 panic 和 recover 5 make 和 new 接下来我们来对golang的 ...
- 七张图了解Kubernetes内部的架构
Kubernetes是用于管理容器化应用程序集群的工具.在计算机领域中,此过程通常称为编排. 用管弦乐编排比喻上面的服务编排是很恰当的,就像乐队指挥一样,Kubernetes协调地将许多微服务组合在一 ...
- 总结的太到位:python 多线程系列详解
前言: 上vip课的时候每次讲到框架的执行,就会有好学的同学问用多线程怎么执行,然后我每次都会说在测开课程会详细讲解,这并不是套路,因为如果你不理解多线程,不清楚什么时候该用什么时候不该用,就会适得其 ...
- kaldi中文语音识别(1)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zyziszy/article/details/82919957 </div><li ...
- go每日新闻--2020-05-20
go 语言中文网(每日资讯)_2020-05-20 一.Go 语言中文网 只用 3 步构建 Go Docker 最小镜像 听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理! Go 语 ...
最新文章
- ubuntu squid 做http代理
- [pytorch、学习] - 3.5 图像分类数据集
- 共享单车扫不开却自动计费 行程显示骑到非洲:想要带你一起去旅行?
- java实现音频播放小程序_微信小程序实现音频文件播放进度的实例代码
- ie手机浏览器_最终还是说再见!微软宣布重要消息,IE浏览器被放弃
- 同步虚拟机与本机的时间
- 搜索软件推荐—Listary一款高效搜索工具
- JavaScript相关文章推荐
- 在中信工作的那些日子
- java 空格 separater_Java随手记
- 工作一年的心得体会(持续中.......)
- 2021C语言全套教程
- 微信开发者工具关联gitee
- java--类单继承多实现,接口多继承
- 浅析swift optional
- Java 提供给第三方使用接口方法
- java同时启动多个线程(一)
- 机器学习发展历史(符号学习、统计机器学习、深度学习)
- .net mvc项目 开发API接口
- sdcms IIS7 windows server 2008 配置后,无法修改模板页面