目录

  • 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语言计时器相关推荐

  1. Go语言计时器的使用详解

    Go语言计时器 Go语言的标准库里提供两种类型的计时器Timer和Ticker.Timer经过指定的duration时间后被触发,往自己的时间channel发送当前时间,此后Timer不再计时.Tic ...

  2. 【Day4 C语言基础语法学习-3】

    Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...

  3. step1 . day4 C语言基础练习之日历

    学习完基础循环.选择语句,写一个日历检验水准. 日历核心: 1.选择基础参照,用来计算总天数和周几的参照(since 1900.1.1,这天是周一) 2.闰年平年的判断条件及循环结构 3.计算需要打印 ...

  4. C语言 计时器的实现(利用系统55ms中断计时)

    //利用系统55ms中断,显示时间 //作者:nuaazdh //时间:2011年11月30日 #include <stdio.h> #include <dos.h> #inc ...

  5. golang sqlx scan 到结构体中_Golang语言并发编程之定时器

    上一章中对于golang的常用关键字说明如下: 1 for 和 range 2 select 3 defer 4 panic 和 recover 5 make 和 new 接下来我们来对golang的 ...

  6. 七张图了解Kubernetes内部的架构

    Kubernetes是用于管理容器化应用程序集群的工具.在计算机领域中,此过程通常称为编排. 用管弦乐编排比喻上面的服务编排是很恰当的,就像乐队指挥一样,Kubernetes协调地将许多微服务组合在一 ...

  7. 总结的太到位:python 多线程系列详解

    前言: 上vip课的时候每次讲到框架的执行,就会有好学的同学问用多线程怎么执行,然后我每次都会说在测开课程会详细讲解,这并不是套路,因为如果你不理解多线程,不清楚什么时候该用什么时候不该用,就会适得其 ...

  8. kaldi中文语音识别(1)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zyziszy/article/details/82919957 </div><li ...

  9. go每日新闻--2020-05-20

    go 语言中文网(每日资讯)_2020-05-20 一.Go 语言中文网 只用 3 步构建 Go Docker 最小镜像 听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理! Go 语 ...

最新文章

  1. ubuntu squid 做http代理
  2. [pytorch、学习] - 3.5 图像分类数据集
  3. 共享单车扫不开却自动计费 行程显示骑到非洲:想要带你一起去旅行?
  4. java实现音频播放小程序_微信小程序实现音频文件播放进度的实例代码
  5. ie手机浏览器_最终还是说再见!微软宣布重要消息,IE浏览器被放弃
  6. 同步虚拟机与本机的时间
  7. 搜索软件推荐—Listary一款高效搜索工具
  8. JavaScript相关文章推荐
  9. 在中信工作的那些日子
  10. java 空格 separater_Java随手记
  11. 工作一年的心得体会(持续中.......)
  12. 2021C语言全套教程
  13. 微信开发者工具关联gitee
  14. java--类单继承多实现,接口多继承
  15. 浅析swift optional
  16. Java 提供给第三方使用接口方法
  17. java同时启动多个线程(一)
  18. 机器学习发展历史(符号学习、统计机器学习、深度学习)
  19. .net mvc项目 开发API接口
  20. sdcms IIS7 windows server 2008 配置后,无法修改模板页面

热门文章

  1. Excel 2010 VBA 入门 100 将xls格式工作簿批量转换为xlsx格式
  2. 【Mybatis从入门到实战教程】第一章 Mybatis 入门
  3. android 平板 旗舰,聊一款旗舰级安卓平板电脑
  4. 时间服务器端口协议,时间服务器端口
  5. 哈工大计算机网络-作业讲解
  6. 推荐系统深度学习篇-NFM 模型介绍(1)
  7. 使用pycharm去掉表格中的重复数据
  8. Win 11 预览版虚拟机安装
  9. Akka(6): become/unbecome:运算行为切换
  10. 蓝桥杯, 38线译码器74Hc138