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

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

测试程序如下:

#include

#include

int main()

{

time_t start ,end ;

double cost;

time(&start);

sleep();

time(&end);

cost=difftime(end,start);

printf("%f/n",cost);

return ;

}

本程序在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秒。

测试程序如下:

#include

#include

int main()

{

double start,end,cost;

start=clock();

sleep();

end=clock();

cost=end-start;

printf("%f/n",cost);

return ;

}

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

1、GetTickCount()

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

#include

#include

using namespace std;

int main()

{

double start = GetTickCount();

Sleep();

double end=GetTickCount();

cout << "GetTickCount:" << end-start << endl;

return ;

}

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即可)。当然,精度肯定为秒了。

测试程序如下:

#include

#include

using namespace std;

int main()

{

SYSTEMTIME start; //windows.h中

GetLocalTime(&start);//time.h的tm结构体一样的效果

cout<< start.year << endl;

}

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

#include

#include

#include

int main()

{

struct tm *tm_ptr;

time_t the_time;

(void) time(&the_time);

tm_ptr = gmtime(&the_time);

printf("Raw time is %ld/n", the_time);

printf("gmtime gives:/n");

printf("date: %02d/%02d/%02d/n",

tm_ptr->tm_year, tm_ptr->tm_mon+, tm_ptr->tm_mday);

printf("time: %02d:%02d:%02d/n",

tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);

exit();

}

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

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

#include

#include

#include

int main()

{

time_t the_time;

time(&the_time);

printf("The date is : %s /n" , ctime(&the_time));

exit();

}

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

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

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

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

测试程序如下:

#include

#include

using namespace std;

int main()

{

LARGE_INTEGER m_nFreq;

LARGE_INTEGER m_nBeginTime;

LARGE_INTEGER nEndTime;

QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期

QueryPerformanceCounter(&m_nBeginTime); // 获取时钟计数

Sleep();

QueryPerformanceCounter(&nEndTime);

cout << (double)(nEndTime.QuadPart-m_nBeginTime.QuadPart)*/m_nFreq.QuadPart << endl;

}

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

4、timeGetTime()。

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

#include

#include //GetTickCount

//#include

using namespace std;

int main()

{

DWORD start = timeGetTime();//

Sleep();

DWORD end= timeGetTime();//

cout << timeGetTime() << endl;

return ;

}

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

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

http://blog.csdn.net/coder_xia/article/details/6566708

c&sol;c&plus;&plus;在windows下获取时间和计算时间差的几种方法总结 【转】

http://blog.csdn.net/coder_xia/article/details/6566708 一.标准C和C++都可用 1.获取时间用time_t time( time_t * tim ...

c&plus;&plus; 在windows下获取时间和计算时间差的几种方法总结

http://blog.csdn.net/caimagic/article/details/50696609 我用的是GetTickCount(), 获取到的是毫秒.

c和c&plus;&plus;在windows下获取时间和计算时间差的方法总结

c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...

Windows下Apache&plus;MySQL&plus;PHP快速配置的几种方法

Apache MySQL PHP Windows WAMP 1.易思EasySiteServer服务器集成环境 v1.0  (推荐) 尔创互联为推广其ESPCMS而开发的一个小东东,很好用.零配置,完 ...

Windows下获取高精度时间注意事项

Windows下获取高精度时间注意事项 [转贴 AdamWu]   花了很长时间才得到的经验,与大家分享. 1. RDTSC - 粒度: 纳秒级 不推荐优势: 几乎是能够获得最细粒度的计数器抛弃理由: ...

windows下获取IP地址的两种方法

windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

Windows下获取本机IP地址方法介绍

Windows下获取本机IP地址方法介绍 if((hostinfo = gethostbyname(name)) != NULL) { #if 1 ; printf("IP COUNT: % ...

C语言实现Windows下获取IP和MAC地址。

C语言实现Windows下获取IP和MAC地址. #include #include #include

windows下 sqlplus &sol; as sysdba 报ora-12560的终极解决方法

windows下 sqlplus / as sysdba 报ora-12560的终极解决方法 本文是原创文章.转载请注明出处:http://blog.csdn.net/msdnchina/articl ...

随机推荐

Unity 碰撞检测中碰撞器与触发器的区别

要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...

php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。

静态  static关键字 普通成员普通成员是属于对象的 静态成员静态成员是属于类的 普通方法里面可以调用静态成员静态方法里面不能调用普通成员self关键字 在类里面代表该类 普通类class Ren ...

关于安卓启动eclipse错误:找不到元素&OpenCurlyQuote;d&colon;devices&&num;39&semi;的声明

可以把C:\Documents and Settings\Administrator\.android\devices.xml这个文件删除, 再把sdk里面tools\lib下的这个文件拷贝到你删除的 ...

不同浏览器对URL最大长度的限制

不同浏览器对URL最大长度的限制   1.今天碰到一个bug,window.open后面的页面,接收参数不全,导致后台报错.实验了一下.发现是使用get方法请求服务器时,URL过长所致 微软官方的说明 ...

广度优先搜索(BFS)——迷宫的最短路径

宽度优先搜索按照距开始状态由近到远的顺序进行搜索,因此可以很容易的用来求最短路径,最少操作之类问题的答案. 宽度优先搜索介绍(一篇不错的文章). 题目描述: 给定一个大小为N*M的迷宫.迷宫有通道和墙 ...

基于ubuntu16&period;04部署IBM开源区块链项目-弹珠资产管理&lpar;Marbles&rpar;

前言 本教程基本上是对Marbles项目的翻译过程. 如果英文比较好的话,建议根据官方操作说明,一步步进行环境部署.当然你也可以参考本教程在自己的主机上部署该项目. Marbles 介绍 关于 Mar ...

oracle Lob对象空间回收测试

备注:转自网络 SQL> create table t(time date,text clob);SQL> begin for i in 1 .. 10000 loop insert in ...

minerd

云服务器 ECS Linux 异常进程 minerd 导致系统 CPU 跑满 问题现象 云服务器 ECS Linux 服务器 CPU 跑满,或者使用服务器越来越慢. 问题原因 使用 top 命令看到有 ...

php-config

php-config php-config 是一个简单的命令行脚本用于获取所安装的 PHP 配置的信息. 在编译扩展时,如果安装有多个 PHP 版本,可以在配置时用 --with-php-config ...

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

  1. linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...

    获取时间和计算时间差的几种方法总结,时间差几种方法 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( ...

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

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

  3. 个人所得税递归函数C语言,C语言实现 计算个人所得税务2种方法

    #include #include /* 基于C语言的个人所得税计税系统 问题描述: 我国现行的个人所得税计算方法如下: 级数 全月应纳税所得额   税率(%) 1 不超过500元的    5 2 超 ...

  4. 【时间处理】python制作日历、判定日期是周几(2种方法) 、获取某年某月的日历数据、获取法定节假日

    在写项目管理系统时,开发了日历管理模块,以结合个人日历提醒.审批流时间处理的等等,以下是用到的相关模块及代码: 1.判断给定的日期是周几(2种方法): 方法一: from datetime impor ...

  5. c语言实现将两个文件复制到一个文件里_Python中复制文件的9种方法

    作者:小小程序员 链接:https://zhuanlan.zhihu.com/p/91277888 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Python 中有 ...

  6. 【转载】让DIV的滚动条自动滚动到最底部的3种方法

    转载自:脚本之家  → 网络编程 → JavaScript → javascript技巧 → 让DIV的滚动条自动滚动到最底部的3种方法(推荐) http://www.jb51.net/article ...

  7. c语言如何将8个字符串串联_C ++中的字符串串联:串联字符串的4种方法

    c语言如何将8个字符串串联 In this article, we will unveil the various ways of performing string concatenation in ...

  8. PHP计算剩余时间的2种方法,返回距离现在时间的格式,如1秒前,1分前..

    第一种 把两个日期格式的字符串转化成unix时间戳,然后相减获得时间戳差.最后判断剩余时间,生成类似(2小时30分钟20秒前发布)这样的时间格式 public function gettime($ti ...

  9. 猴子选王c语言链表程序代码,c/c++编程题 之 猴子选大王(数组、链表两种方法)...

    题目描述 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1-N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报 ...

最新文章

  1. java中random的头文件_JAVA中的Random()函數
  2. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...
  3. mac下配置进行c和matlab混编
  4. Yii 关于AR分表
  5. 力扣题目——160. 相交链表
  6. 微软ReportViewer(rdlc)发布时所需要的动态库(vs2010)
  7. SpringBoot加载自定义yml文件
  8. python unittest教程_python unittest 基本介绍
  9. 解决print spooler打印服务自动停止的过程记录
  10. Word控件Spire.Doc 转换教程(二十一):将非标准字体的word文档转换为PDF
  11. SSRS(rdl报表)分页显示表头和对表头的冻结处理
  12. c语言音阶数组,【项目6-任务7-小组14】蜂鸣器演奏简单乐曲及简易电子琴制作...
  13. 华为网络篇 BPDU报文格式-11
  14. 一个好用的软件定时器模块MultiTimer
  15. 下拉框无法收回的解决方法:focus-outside使用方式
  16. 【修改el-menu主菜单和子菜单悬浮的背景色】
  17. 微吼2022企业直播创见大会:探寻直播行业星辰大海
  18. 《从案例中学习JavaScript》之实现对话效果
  19. 关于VMware 虚拟机使用时,一打开虚拟机就重启问题-Win11
  20. Shell小技巧(一百三十一)服务器tcp连接数实时统计

热门文章

  1. cad编辑节点快捷键是什么_CAD常用命令、快捷键和命令说明大全
  2. 编程思想-模块化-模块化程序设计:模块化程序设计
  3. postman脚本编写
  4. 世界上没有一份工作是不苦的
  5. 推荐一本程序员、软件开发人员职业生涯指南的书
  6. 不容忽视的电脑被黑信号
  7. word-多标签工具Office Tab(自用+带下载地址)
  8. PBFT实用拜占庭容错算法
  9. 智慧景区票务系统需要服务器吗,景区票务系统要不要选择SaaS系统的
  10. 计算机技术英语网站,中国致力于成为计算机技术强国