c/c++在windows下获取时间和计算时间差的几种方法总结

C语言获取当前日期和时间   本文介绍使用C语言获取系统当前的日期和时间,包括Linux和Windows环境下的不同函数使用。同时,使用自己编写的获取日期和时间的函数自定义实现延时函数的功能。(1)函数 void ftime(struct timeb *tp);  timeb 结构体定义: (2)函数 struct tm *localtime(const time_t *clock);  tm 结构体定义: 2、Windows下的相关函数 (1)函数 VOID GetSystemTime(LPSYSTEMTIME lpSystemT 阅读详情

一、标准C和C++都可用

1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。

测试程序如下:

 

    本程序在fedora9测试通过。

    关于代码中的sleep函数,需要注意的是:

    1)在windows下,为Sleep函数,且包含windows.h

    2)关于sleep中的数,在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。

 

2、clock_t clock(),clock()

    获取的是计算机启动后的时间间隔,得到的是CPU时间,精确到1/CLOCKS_PER_SEC秒。

    测试程序如下:

 

二、C++中(此处针对windows环境,标准c中则linux和windows都可以)

1、GetTickCount()

      调用函数需包含windows.h。得到的是系统运行的时间 精确到毫秒,测试程序如下:

2、GetLocalTime()

      获得的是结构体保存的year,month等信息。而C语言time函数获得是从1970年1月1日0时0分0秒到此时的秒数。需要gmtime函数转换为常用的日历(返回的是世界时间,要显示常用的时间,则为localtime函数)。

     在c语言中,保存常用日历的结构体为struct tm,包含在time.h中,c++语言为SYSTEMTIME结构体,包含在winbase.h(编程包含windows.h即可)。当然,精度肯定为秒了。

测试程序如下:

 

c语言的gmtime方法的示范代码如下:

另外,c语言有类似于GetLocalTime方法的函数ctime()。

对localtime(),原型为:struct tm *localtime(const time_t *timep);将测试程序的gmtime改为localtime,则可以看到输出的时间为争取时间和日期了。为了更友好的得到时间和日期,像date那样输出,可以用asctime或ctime函数,原型:char  *ctime(const time_t  *timeval);测试代码如下:

 

3、要获取高精度时间,可以使用

       BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率

       BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值

       然后用两次计数器的差除以Frequency就得到时间。

测试程序如下:

 

需要注意的就是结果需要强制转换为double,不然会得到如下错误:<< is ambiguous。

4、timeGetTime()。

     精度:毫秒,与GetTickCount()相当。使用需要包含windows.h,并加入Winmm.lib(虽然查到资料说需要包含mmsystem.h,不过经验证,可以不用包含)。测试代码如下:


 5、MFC中,CTime::GetCurrentTime() 精确到秒,不列出测试代码。

 

关于定时器什么的,目前用到地方不多,就不总结了

 

参考网址:

1、http://blog.youkuaiyun.com/wallaceli1981/archive/2009/10/24/4723218.aspx 

2、http://wenku.baidu.com/view/beb3c9eef8c75fbfc77db2b5.html

C/C++ 计算时间间隔的方法 这两种方法都可以用来计算时间间隔,选择哪种方法取决于你的需求和个人偏好。time.h 头文件提供了一种简单的方式来处理时间,而 chrono 库则提供了更强大和灵活的功能。在 C/C++ 中,我们可以使用不同的方法来计算时间间隔。下面我将介绍两种常用的方法:使用 time.h 头文件中的函数和使用 C++11 提供的 chrono 库。time.h 头文件提供了一些用于处理时间的函数,其中包括计算时间间隔的方法。C++11 引入了 chrono 库,提供了一种更现代和类型安全的方式来处理时间。 阅读详情

相关推荐

国内外主流嵌入式GUI汇总

随着MCU资源增多,处理能力也强了,同时市场需求也增多了GUI功能也越来越丰富了,很多的嵌入式图形库都可以做出绚丽的界面。

m0_69914734的博客 3289

计算两个时间的时间差(C语言)

首先我们先构思这套题目怎么写,时间差那很简单直接后面时间减去前面不就好了,但是忽略了一点,如果第后面时间分钟是8点10分,前面是7点20分那不就是负数了。

m0_58630826的博客 2万+

NVIDIA 2025 Board Design Engineer 校招笔试全解析:从基础门电路到理想放大器设计

本文详细解析了NVIDIA 2025届板级设计工程师校招笔试的核心考点与解题策略。内容涵盖从基础门电路、CMOS实现NOR门,到开关电源CCM/DCM模式波形分析与效率计算,以及理想运放电路设计与稳定性优化。旨在帮助考生构建硬件知识体系,掌握工程思维,顺利通过NVIDIA Board Design Engineer校招笔试。

weixin_29172201的博客 195

C++ 计算时间差

参考【C++】计算时间差 - CrazyTomato - 博客园 1.clock() 标准库中ctime头文件 #include <ctime> #include <iostream> using namespace std; int main(){ clock_t start = clock(); //获取当前系统时间 function(); clock_t end = clock(); double pr

u011141114的博客 7486

使用Java实现CRC16 MODBUS 格式校验

CRC16校验,测试如下 String str = "a5 98 03 00 00 5f c6 0f 7c 40 78 06 09 46 dc 6e db 00 16 3e 12 5c 98 00 19 98 0e 10 03 06 09 46 dc 6e db 03 0b bf 5f c6 0f 7c 43 bd b9 61 ee 96 76 99"; 校验规则: /** * CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结

weixin_45063710的博客 1312

别再纠结Dify了!实测对比RAGFlow和Dify,聊聊企业知识库到底该怎么选

本文深度对比了RAGFlow和Dify在企业知识库选型中的实际表现,从技术架构、性能指标、部署成本等多维度进行分析。RAGFlow在复杂文档处理和准确率方面表现突出,适合有专职技术团队的企业;而Dify则以低门槛和快速部署见长。文章提供了六维度评估法,帮助企业根据文档复杂度、准确率要求等技术指标做出明智选择。

weixin_30897233的博客 667

c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...

一、标准C和C++都可用1、获取时间用time_ttime( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。精确到秒。测试程序如下:#include #include int main(){time_t start ,end ;double cost;time(&start);sleep(...

weixin_35075740的博客 1478

点云从入门到精通技术详解100篇-点云的特征检测(续)

对每个维度的序列分别计算 DTW 距离,最后。权重将距离限制在较小的范围内,对于时间跨度大的数据集,过度限制了点对点的路径,同的,因此不能用欧氏距离来计算两个多元时间序列之间的距离,本文选用的是动态时。到的股票数据是未知分类的,因此该数据的相似性分析缺少有效的评价方式,通常需要。时间序列,简而言之,就是与时间相关的数据的集合,应用在生活工作中的方方面。时间序列的分段线性化表示的难点在于如何找出分段点,目前,对于分段点的研究。经过分段线性化之后,每个多元时间序列的维度是相同的,但是每一维的长度是不。

getusushu的博客 334

c/c++在windows下获取时间和计算时间差的几种方法总结 【转】

http://blog.youkuaiyun.com/coder_xia/article/details/6566708 一、标准C和C++都可用 1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。 测试程序如下: [c-sharp] view ...

weixin_33912453的博客 172

YOLO26-seg分割优化:卷积魔改 | 动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023

​​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 214

手把手教你学Simulink——基于Simulink的储能PCS(功率转换系统)离网V/f控制仿真示例

本文带你从零开始,在Simulink中硬核还原了一套完整的100kW 储能PCS离网V/f控制系统。通过引入:✅无PLL的自主角度生成机制(实现真正的“构网”能力)✅电压外环与电流内环的双闭环解耦架构(兼顾稳态精度与动态响应)✅黑启动软充电与有源阻尼等工程化手段(确保系统平滑建压与抗谐振)核心收获透彻理解了储能系统在无大电网支撑下的自主运行机理。掌握了从“跟网(Grid-Following)”向“构网(Grid-Forming)”跨越的控制算法核心差异。

MHD0815的博客 76

C语言获取当前时间

功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。...

xiaowang_lj的博客 6584

遗传算法(GA)全面解析:从生物基础到工程实践

本文全面解析了遗传算法(GA),从其生物基础到工程实践应用。遗传算法模拟自然进化过程,通过选择、交叉和变异等操作在解空间中高效搜索最优解。文章详细介绍了算法的生物学基础(达尔文进化论、孟德尔遗传定律)、基本概念(种群、个体、基因等)和核心思想。重点阐述了遗传算法的数学模型,包括编码机制、适应度函数设计、遗传算子(选择、交叉、变异)以及关键控制参数。最后提供了一个完整的Python实现示例,展示了遗传算法求解函数最大值问题的具体应用。该算法具有群体搜索、概率导向、无需梯度等特点,适用于各类复杂优化问题。

qq_42212808的博客 1175
上一篇: 关于C++编程思想151页遇到的内存分配问题
下一篇: C/C++语言中的void及void指针总结
coder_xia
博客等级 码龄17年 151粉丝 143原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值