c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...
一、标准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/c++在windows下获取时间和计算时间差的几种方法总结 【转】
http://blog.csdn.net/coder_xia/article/details/6566708 一.标准C和C++都可用 1.获取时间用time_t time( time_t * tim ...
c++ 在windows下获取时间和计算时间差的几种方法总结
http://blog.csdn.net/caimagic/article/details/50696609 我用的是GetTickCount(), 获取到的是毫秒.
c和c++在windows下获取时间和计算时间差的方法总结
c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...
Windows下Apache+MySQL+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 / 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错误:找不到元素‘d:devices&#39;的声明
可以把C:\Documents and Settings\Administrator\.android\devices.xml这个文件删除, 再把sdk里面tools\lib下的这个文件拷贝到你删除的 ...
不同浏览器对URL最大长度的限制
不同浏览器对URL最大长度的限制 1.今天碰到一个bug,window.open后面的页面,接收参数不全,导致后台报错.实验了一下.发现是使用get方法请求服务器时,URL过长所致 微软官方的说明 ...
广度优先搜索(BFS)——迷宫的最短路径
宽度优先搜索按照距开始状态由近到远的顺序进行搜索,因此可以很容易的用来求最短路径,最少操作之类问题的答案. 宽度优先搜索介绍(一篇不错的文章). 题目描述: 给定一个大小为N*M的迷宫.迷宫有通道和墙 ...
基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)
前言 本教程基本上是对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下获取时间和计算时间差的几种方法总结...相关推荐
- linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...
获取时间和计算时间差的几种方法总结,时间差几种方法 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( ...
- c/c++在windows下获取时间和计算时间差的几种方法总结
一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...
- 个人所得税递归函数C语言,C语言实现 计算个人所得税务2种方法
#include #include /* 基于C语言的个人所得税计税系统 问题描述: 我国现行的个人所得税计算方法如下: 级数 全月应纳税所得额 税率(%) 1 不超过500元的 5 2 超 ...
- 【时间处理】python制作日历、判定日期是周几(2种方法) 、获取某年某月的日历数据、获取法定节假日
在写项目管理系统时,开发了日历管理模块,以结合个人日历提醒.审批流时间处理的等等,以下是用到的相关模块及代码: 1.判断给定的日期是周几(2种方法): 方法一: from datetime impor ...
- c语言实现将两个文件复制到一个文件里_Python中复制文件的9种方法
作者:小小程序员 链接:https://zhuanlan.zhihu.com/p/91277888 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Python 中有 ...
- 【转载】让DIV的滚动条自动滚动到最底部的3种方法
转载自:脚本之家 → 网络编程 → JavaScript → javascript技巧 → 让DIV的滚动条自动滚动到最底部的3种方法(推荐) http://www.jb51.net/article ...
- c语言如何将8个字符串串联_C ++中的字符串串联:串联字符串的4种方法
c语言如何将8个字符串串联 In this article, we will unveil the various ways of performing string concatenation in ...
- PHP计算剩余时间的2种方法,返回距离现在时间的格式,如1秒前,1分前..
第一种 把两个日期格式的字符串转化成unix时间戳,然后相减获得时间戳差.最后判断剩余时间,生成类似(2小时30分钟20秒前发布)这样的时间格式 public function gettime($ti ...
- 猴子选王c语言链表程序代码,c/c++编程题 之 猴子选大王(数组、链表两种方法)...
题目描述 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1-N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报 ...
最新文章
- java中random的头文件_JAVA中的Random()函數
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建...
- mac下配置进行c和matlab混编
- Yii 关于AR分表
- 力扣题目——160. 相交链表
- 微软ReportViewer(rdlc)发布时所需要的动态库(vs2010)
- SpringBoot加载自定义yml文件
- python unittest教程_python unittest 基本介绍
- 解决print spooler打印服务自动停止的过程记录
- Word控件Spire.Doc 转换教程(二十一):将非标准字体的word文档转换为PDF
- SSRS(rdl报表)分页显示表头和对表头的冻结处理
- c语言音阶数组,【项目6-任务7-小组14】蜂鸣器演奏简单乐曲及简易电子琴制作...
- 华为网络篇 BPDU报文格式-11
- 一个好用的软件定时器模块MultiTimer
- 下拉框无法收回的解决方法:focus-outside使用方式
- 【修改el-menu主菜单和子菜单悬浮的背景色】
- 微吼2022企业直播创见大会:探寻直播行业星辰大海
- 《从案例中学习JavaScript》之实现对话效果
- 关于VMware 虚拟机使用时,一打开虚拟机就重启问题-Win11
- Shell小技巧(一百三十一)服务器tcp连接数实时统计