当前位置:文档之家› C++对时间的操作

C++对时间的操作

C++对时间的操作
C++对时间的操作

C++/C的时间操作

不管是开发游戏还是制作软件,都需要知道当前的真实时间,才能进一步求出虚拟时间。有时为了调试程序也需要知道程序的运行时间。为了能了解当前的“时间”C++和C中就有一些很特

殊的函数,可帮我们解决这些问题。

1.time函数

time函数是C语言中的函数,C++也通用。该函数的原型是time_t time(time_t * timer),其中time_t其实就是一种长整型变量(也就是等价于long int),本人习惯用这个存储时间来和int区分。

time函数的功能为获取当前的系统时间,返回的结果是一个time_t类型,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00到当前时刻的秒数。由于其可返回实际的时间而非程序运行的时间,所以可以用该函数来做很多事情。

注意:只有time(NULL)或time(0)能返回上述的值,否则将编译错误!

*若想得到当前的日期和时间,而不只是想获得系统时间,可调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型(即类似于结构体的变量),该类型的各数据成员分别表示年月日时分秒。例如语句“struct tm *tblock = localtime(&time(NULL));”之后输出tblock就会按“星期月日时:分:秒年9”的格式输出。这种方法给小游戏开发者带来了极大的便利。有兴趣者可以尝试一下。

例计算玩家的反应速度

如果要编一个程序,计算玩家的反应速度(从要求按下到实际按下的秒数),则用time 函数是最好的选择。

首先要明确以下问题:

1.问:如何判断等待的时间?——答:在要求按下时记录time,按下后再记录一次,再相减。

2.问:如何做成一个小程序?——答:等待一定的时间,然后要求按下,让用户按下。

代码1:

运行大家是否发现一些问题:虽然程序看似很完整,但是第11行等待的时间都差不多——实际上,那完全一样!因为C/C++的rand需要一个变化的随机数种子,如果种子不是变化的,则rand返回的值完全相同!那么该怎么生成这个随机数种子呢?这时time函数就要派上一个特殊的用场了——生成种子。因为time函数即使只相隔一秒返回值也会不同,同时由于它又不会返回负数,可以用mod运算来求指定范围的随机数,所以是绝佳的种子生成器!

我们可以试着在程序开头加上一句srand(time(NULL)),再试试运行。

代码2:

哈哈,成!这就是我们的time函数!

2.clock函数

与强大的time函数相比,clock函数就属于小弟级了,但该函数在程序调试过程中很有用处!clock函数的原型是clock_t clock(void)。其中clock_t和time_t一样,是long int,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。具体见第一个例子。注意:本函数仅能返回ms级的计时精度(事实上能够达到的计时精度大致与操作系统的线程切换时间相当,在windows平台上,极限精度大致是15~16ms)。如果需要us级别的计时精度,Linux 系统可以使用库函数:gettimeofday()。

例如,想计算某程序的运行时间,即可使用clock函数!

C语言标准库函数2012

常用C语言标准库函数2012 C语言编译系统提供了众多的预定义库函数和宏。用户在编写程序时,可以直接调用这些库函数和宏。这里选择了初学者常用的一些库函数,简单介绍了各函数的用法和所在的头文件。 1.测试函数 Isalnum 原型:int isalnum(int c) 功能:测试参数c是否为字母或数字:是则返回非零;否则返回零 头文件:ctype.h Isapha 原型:int isapha(int c) 功能:测试参数c是否为字母:是则返回非零;否则返回零 头文件:ctype.h Isascii 原型:int isascii(int c) 功能:测试参数c是否为ASCII码(0x00~0x7F):是则返回非零;否则返回零 头文件:ctype.h Iscntrl 原型:int iscntrl(int c) 功能:测试参数c是否为控制字符(0x00~0x1F、0x7F):是则返回非零;否则返回零 头文件:ctype.h Isdigit 原型:int isdigit(int c) 功能:测试参数c是否为数字:是则返回非零;否则返回零。 头文件:ctype.h Isgraph 原型:int isgraph(int c) 功能:测试参数c是否为可打印字符(0x21~0x7E):是则返回非零;否则返回零头文件:ctype.h Islower 原型:int islower(int c) 功能:测试参数c是否为小写字母:是则返回非零;否则返回零 头文件:ctype.h

Isprint 原型:int isprint(int c) 功能:测试参数c是否为可打印字符(含空格符0x20~0x7E):是则返回非零;否则返回零 头文件:ctype.h Ispunct 原型:int ispunct(int c) 功能:测试参数c是否为标点符号:是则返回非零;否则返回零 头文件:ctype.h Isupper 原型:int isupper(inr c) 功能:测试参数c是否为大写字母:是则返回非零;否则返回零 Isxdigit 原型:int isxdigit(int c) 功能:测试参数c是否为十六进制数:是则返回非零;否则返回零 2.数学函数 abs 原型:int abs(int i) 功能:返回整数型参数i的绝对值 头文件:stdlib.h,math.h acos 原型:double acos(double x) 功能:返回双精度参数x的反余弦三角函数值 头文件:math.h asin 原型:double asin(double x) 功能:返回双精度参数x的反正弦三角函数值 头文件:math.h atan 原型:double atan(double x) 功能:返回双精度参数的反正切三角函数值 头文件:math.h atan2 原型:double atan2(double y,double x) 功能:返回双精度参数y和x由式y/x所计算的反正切三角函数值 头文件:math.h cabs

C语言日期时函数

asctime(将时间和日期以字符串格式表示) 相关函数:time,ctime,gmtime,localtime 表头文件:#include 定义函数:char * asctime(const struct tm * timeptr); 函数说明:asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法, 然后将结果以字符串形态返回。此函数已经由时区转换成当地时间, 字符串格式为:“Wed Jun 30 21:49:08 1993\n” 返回值:若再调用相关的时间日期函数,此字符串可能会被破坏。 此函数与ctime不同处在于传入的参数是不同的结构。 附加说明:返回一字符串表示目前当地的时间日期。 范例: 1#include 2main() { 3 time_t timep; 4 time (&timep); 5printf(“%s”,asctime(gmtime(&timep))); 6} 执行结果:Sat Oct 28 02:10:06 2000 ctime(将时间和日期以字符串格式表示) 相关函数:time,asctime,gmtime,localtime 表头文件:#include 定义函数:char *ctime(const time_t *timep); 函数说明:ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法, 然后将结果以字符串形态返回。此函数已经由时区转换成当地时间, 字符串格式为“Wed Jun 30 21 :49 :08 1993\n”。 若再调用相关的时间日期函数,此字符串可能会被破坏。 返回值:返回一字符串表示目前当地的时间日期。 范例: 1#include 2main(){ 3 time_t timep; 4 time (&timep); 5printf(“%s”,ctime(&timep)); 6} 执行结果:Sat Oct 28 10 : 12 : 05 2000 gettimeofday(取得目前的时间) 相关函数:time,ctime,ftime,settimeofday 表头文件:#include #include 定义函数:int gettimeofday ( struct timeval * tv , struct timezone * tz ) 函数说明:gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。

时间控制器使用说明

时间控制器使用说明 1.时钟校准: 在时钟状态下。根据当前时间,按住时钟键。然后分别按“星期”、“时”、“分”键校准星期时和分。 2.定时设定: A.按一下“设定”键,显示屏左下方出现“1ON”字样(表示第一次开机时间),再分别按“星期”、“时”、“分”键输入所需开启的时间。 B.再按一下“设定”键,显示屏左下方出现“1OFF”字样(表示第一次关机时间),再分别按“星期”、“时”、“分”键输入所需关闭的时间。 C.继续按动“设定”键,显示屏左下方一次显示(2ON 、2OFF。。。。。。10ON 、10OFF)参考步骤A、B设置以后各次的开关时间,如果每天只开关一次,则必须按“清除”键,将他们后面的时间清除,使显示屏上显示“--:--”字样。 D.在设定1—10次开、关机程序时,可设定每天相同,每天不同:星期一至星期五相同, 星期一至星期六相同, 星期六与星期日相同。 星期一、星期三、星期五相同, 星期二、星期四、星期六相同, 星期一至星期三相同,星期四至星期六相同共九种控制方式。 3.开/自动/关输出控制方式设定: 按“开/自动/关”键时,显示屏的下方出现“ON/AUTO/OFF”且与相对应的面板上有“开/自动/关”字样,表示所选择的输出控制方式。其中“开、关”为手动控制方式,此时输出不受时间控制器的程序控制。 4.注意点: A.在设置“自动”输出方式时,必须由“关”状态转换为“自动”状态。 B.如果在操作过程中发生错误不知如何纠正或者其他原因不能顺利完成,可以按正面面板上小孔复位键(reset)回到初始状态重新开始设置。 5.故障排除: A.如果某天该开的时间没有开,或者开了以后到关的时间还没有关,那可能是因为定时设置的“星期”没有调对,请按照“定时设置”中介绍的方法检测重调即可排除故障。 B.如果确认“开启”和“关闭”时间调的完全正确。但是本开关在不该开的时间开了起来,或者不该关的时间被关掉,那可能是因为多余的几组开关时间没有清除,请参照“定时设置”中介绍的方法清除(注意:开关时间显示“--:--”才表示清除,不是显示“00:00表示清除) C.如果A、B全部正确,而本开关依然动作不正常,有可能是“开/自动/关”键被人为动作,检测“开/自动/关”处于何种状态,将其由“OFF”的位置调整到“AUTO”位置。 D.如以上几种方法还是不能排除故障,则说明时间控制器损坏。.

Matlab中计算程序运行时间的三种方法

Matlab中计算程序运行时间的三种方法 经常我们需要计算我们程序到底运行多长时间,这样可以比较程序的执行效率。当然这个对于只有几秒钟的小程序没有什么意义,但是对于大程序就有很重要的意义了。 下面我们就说说Matlab中计算程序运行时间的三种常用方法吧! 注意:三种方法由于使用原理不一样,得到结果可能有一定的差距! 1、tic和toc组合(使用最多的) 计算tic和toc之间那段程序之间的运行时间,它的经典格式为 1. tic 2. 。。。。。。。。。。 3. toc 复制代码 换句话说程序,程序遇到tic时Matlab自动开始计时,运行到toc时自动计算此时与最近一次tic之间的时间。这个有点拗口,下面我们举个例子说明 1. % by dynamic of Matlab技术论坛 2. % see also https://www.doczj.com/doc/d03720693.html, 3. % contact me matlabsky@https://www.doczj.com/doc/d03720693.html, 4. % 2009-08-18 12:08:47 5. clc 6. tic;%tic1 7. t1=clock; 8. for i=1:3 9. tic ;%tic2 10. t2=clock; 11. pause(3*rand) 12. %计算到上一次遇到tic的时间,换句话说就是每次循环的时间 13. disp(['toc计算第',num2str(i),'次循环运行时间:',num2str(toc)]); 14. %计算每次循环的时间 15. disp(['etime计算第',num2str(i),'次循环运行时间:',num2str(etime(clock,t2))]); 16. %计算程序总共的运行时间 17. disp(['etime计算程序从开始到现在运行的时间:',num2str(etime(clock,t1))]); 18. disp('======================================') 19. end 20. %计算此时到tic2的时间,由于最后一次遇到tic是在for循环的i=3时,所以计算 的是最后一次循环的时间 21. disp(['toc计算最后一次循环运行时间',num2str(toc)]) 22. disp(['etime程序总运行时间:',num2str(etime(clock,t1))]); 复制代码 运行结果如下,大家可以自己分析下 1. toc计算第1次循环运行时间: 2.5628 2. etime计算第1次循环运行时间:2.562

C语言常用函数手册

1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

C语言计时函数

C语言计时函数 (2012-05-16 09:30:18) 转载▼ 分类:c*cpp 标签: 杂谈 1. 中函数clock(),返回类型clock_t,精确度,毫秒级别 实例: #include #include #include void test() { int i = 0; int j = 0; double a = 0; while (i++ < 1000000) while (j++ < 1000000) { a = sqrt(2.0); } } int main(void) { clock_t start, finish; double duration = 0.0; start = clock(); test(); finish = clock(); duration = (double)(finish - start);输出单位ms duration = (double)(finish - start) / CLOCKS_PER_SEC; //输出单位为妙,精确到毫秒级 //#define CLOCKS_PER_SEC 1000 printf("%f seconds\n", duration);

return 0; } 2、中函数time(&t),精确度,秒级别 功能:取以秒为单位的,从1970年1月1日格林威治时间00:00:00算起的当前时间,并把它存在长整形变量t中,函数返回如前所述的时间秒值。 测试程序如下: #include "stdio.h " #include "time.h " #include "stdlib.h " main() { long start,end; time(&start); delay(50000); time(&end); printf( "end-start=%ld\n ",end-start); getch(); } 3. 最精确的计时:QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的。 #include #include #include void test() { int i = 0; int j = 0; double a = 0; while (i++ < 1000000) while (j++ < 1000000) { a = sqrt(2.0); } } int main(void) {

霓虹灯时间控制器使用说明

时间控制器使用说明 一、时间控制器结构及用途 取消/恢复按钮:取消/恢复现有/删除数据 校时按钮:调整时间的小时数字 校分按钮:调整时间的分钟数字 校星期:按钮:调整当前星期 自动/手动:默认在自动位置,需要开启时,按此按钮即可达到开、关目的。注意,最后要将指示三角(横杠)调整到自动位置 定时按钮:设置控制器定时动作,按压第一次为第一组开,按压第二次为第一组关,按压第三次为第二组开……以此类推 时钟,在任何设置状态下,返回时控开关的默认正常工作状态 指示灯:红色表示供电正常,绿色表示开启状态 二、时间设定 1. 设置单组动作 首先,按下定时一次,注意屏幕显示:左下角显示第1组的开(1开/ON),中间显示大数字时间,此时间为开灯时间,将其通过按压校时/校分调整到需要开灯的时间。注意上面一排的一、二、三……,如果一周内全天都是同一时间使用,则必须显示一二三四五六七字样,代表周一至周日在此设定时间开启 然后,按下定时一次,注意屏幕显示:左下角显示第1组的关(1关/OFF),中间显示大数字时间,此时间为关灯时间,将其通过按压校时/校分调整到需要关灯的时间。注意上面一排的一、二、三……,如果一周内全天都是同一时间使用,则必须显示一二三四五六七字样,代表周一至周日在此设定时间开启 最后,继续按定时按钮,将第二组及以后各组有数字的,一律按取消/恢复按钮将其变成--:--。按下时钟键,使屏幕恢复到当前时间工作状态,注意,时空开关必须在此状态下才可以正常工作。 2. 设置多组动作 如非必要,不建议使用此种控制方式 设置方法,与单组设置相同,注意组号和星期即可。控制器可根据星期的不同,设置不同的工作日,也可根据时间不同,在一天内多次动作。需要注意的是最后要检查各组,不能有冲突时间,即所有组别中,不可以有同一时间或包含的时间。 三、更改时定时间 调整时控的当前时间和星期 按住时钟按钮不放,依次按压校时、校分、校星期调整到需要显示即可。 四、注意事项 1. 每次调整、查看时控后,必须按一次时钟键,使显示屏恢复到当前时间工作状态; 2. 每次调整后,屏幕下方的指示应放在自动位置; 3. 如当前时间为开灯时间,则将时控手动设置为开,并将指示位置调整为自动; 调整过程中,不可以改变低压线路; KG316T,宇泰通讯

C语言函数手册(DOC)

一、字符测试函数 isupper()测试字符是否为大写英文字 ispunct()测试字符是否为标点符号或特殊符号isspace()测试字符是否为空格字符 isprint()测试字符是否为可打印字符 islower()测试字符是否为小写字母 isgraphis()测试字符是否为可打印字符 isdigit()测试字符是否为阿拉伯数字 iscntrl()测试字符是否为ASCII码的控制字符isascii()测试字符是否为ASCII码字符 isalpha()测试字符是否为英文字母 isalnum()测试字符是否为英文或数字 isxdigit()测试字符是否为16进制数字 二、字符串操作函数 strtok()字符串分割函数 strstr()字符串查找函数 strspn()字符查找函数 strrchr()定位字符串中最后出现的指定字符 strpbrk()定位字符串中第一个出现的指定字符strncpy()复制字符串 strncat()字符串连接函数 strncasecmp()字符串比较函数(忽略大小写) strlen()字符串长度计算函数 strdup()复制字符串 strcspn()查找字符串 strcpy()复制字符串 strcoll()字符串比较函数(按字符排列次序) strcmp()字符串比较函数(比较字符串) strchr()字符串查找函数(返回首次出现字符的位置) strcat()连接字符串 strcasecmp()字符串比较函数(忽略大小写比较字符串) rindex()字符串查找函数(返回最后一次出现的位置) index()字符串查找函数(返回首次出现的位置) toupper()字符串转换函数(小写转大写) tolower()字符串转换函数(大写转小写) toascii()将整数转换成合法的ASCII码字符 strtoul()将字符串转换成无符号长整型数

时间控制器

用途: 1、用于手机、蓄电池、电瓶车的定时充电,防止过充。 2、用于电热水器、电暖器、电饭锅、加湿器、电热油汀、空气净化器等家用电器上,实现家电的自动开关。例如,定时器可在您起床时。 让电热水器为您准备好热水,一天的快乐从此开始。 3、在实行峰谷电价的地区,定时器会为您使用谷电价而效力。 4、用于定时开关的路灯、广告灯箱、门面灯光、大楼外墙的照明控制。为您增辉的同时,合理为您节约开支。 5、用于园林的定时灌溉、定时抽排水、水族饲养。 6、用于监控录像的定时开关、学校定时广播的播放。 总之,定时器可用于一切用电设备的定时启停,合理安排您的生产生活,使您学习工作准时高效。 直接控制功率达4KW;不怕停电;每天走时误差小于0.5秒;按照星期设置,每天最多可设置10次开和10次关动作;安装调试方便;最短控制时间为1分。 功能特点: 1.液晶显示,核心采用多功能微电脑芯片,走时准确,操作简单; 2.对一路输出每天最多可作20次的定时开、关(10开10关,也可以不用那么多次数(任意设置); 3.开关时间可按天或按周循环,最长控制时间168小时,最短控制时间为1分钟; 4.设定程序不受停电的影响,停电时亦能正常显示并记忆设定的时间; 5.高品质外壳,防火耐高温。 性能指标: *标准工作电源220V/50Hz *计时误差<±2秒/天 *适用电源范围160~240V *环境温度-25~60℃ *额定电流25A *相对温度<95% *消耗功率<2V A *外形尺寸120×74×58mm *时控范围1分~168小时 *重量430g *有10组开关时间,手动、自动两用 操作说明 定时设置 1、先检查时钟显示是否与当前时间一致,如需重新准,按住“时钟”键的同时,查看显示屏所显示的时 间是否与当前时间一样。分别按住“校星期”、“校时”、“校分”键,将时钟调到当前时间; 2、按一下“定时”键,显示屏左下方出现“1开” 字样(表示第一次开启时间)。然后按“校星期”选择

c语言函数段测试时间方法及比较

函数段测试时间方法及比较 作者:Peter 2011.4.7 一.用四种函数测量同一程序所需时间 1.函数段的测试有4中方法,分别是clock,times,gettimeofday,getrusage来实现的。 2.四种函数的精度如下: clock()函数的精确度是10毫秒(ms); times()函数的精确度是10毫秒(ms); gettimofday()函数的精确度是微秒(μs); getrusage()函数的精确度是纳秒(ns)。 =============================================================== 3.编写test5.c程序,测试1024*1024矩阵运行的时间,比较四种函数测量相同函数段所需的时间。 测试程序如下: =======================/*调用所需的头文件*/======================= #include #include #include #include #include =================/*定义宏变量:所需的4中测试方法*/================= #define TEST_BY_CLOCK (char)(0x00) //CLOCK测试 #define TEST_BY_TIMES (char)(0x01) //TIME测试 #define TEST_BY_GETTIMEOFDAY (char)(0x02) //GETTIMEOFDAY测试 #define TEST_BY_GETRUSAGE (char)(0x03) //GETRUSAGE测试 #define TEST_METHOD (TEST_BY_CLOCK) //选择需要的测试方法 ====================== /*矩阵格式定义*/======================== #define COORDINATION_X (int)(1024) #define COORDINATION_Y (int)(1024) static int g_Matrix[COORDINATION_X][COORDINATION_Y]; =============/*geTimeval类型及gettimeofday和getrusage计算方法*/==========

vc++获取系统时间和程序运行时间

内容: Q:如何获取时间?精度如何? A: 1 使用time_t time( time_t * timer ) 精确到秒 计算时间差使用double difftime( time_t timer1, time_t timer0 ) 2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒 3 使用DWORD GetTickCount() 得到的是系统运行的时间精确到毫秒 4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒 5 要获取高精度时间,可以使用 BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率 BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值 然后用两次计数器的差除以Frequency就得到时间。 6 还有David的文章中提到的方法: Multimedia Timer Functions The following functions are used with multimedia timers. timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高 Q:GetTickCount()函数,说是毫秒记数,是真的吗,还是精确到55毫秒? A: GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。具体例子可以参考QA001022 "VC++中使用高精度定时器"、QA001813 "如何在Windows实现准确的定时"和QA004842 "timeGetTime函数延时不准"。 Q:vc++怎样获取系统时间,返回值是什么类型的变量呢? GetSystemTime返回的是格林威志标准时间 GetLocalTime,和上面用法一样,返回的是你所在地区的时间,中国返回的是北京时间VOID GetSystemTime( LPSYSTEMTIME lpSystemTime // address of system time structure ); 函数就可以获得了,其中LPSYSTEMTIME 是个结构体 含:年,月,日,周几,小时,分,秒,毫秒。 以下是Time的MSDN文档: Compatibility in the Introduction. Libraries LIBC.LIBSingle thread static library, retail versionLIBCMT.LIBMultithread static library, retail versionMSVCRT.LIBImport library for MSVCRT.DLL, retail version Return Value time returns the time in elapsed seconds. There is no error return. Parameter timer Storage location for time Remarks

C语言中的时间处理函数

C语言中的时间处理函数收藏 来源:https://www.doczj.com/doc/d03720693.html,/8892167_d.html C语言时间函数 [原创 2007-04-16 23:30:50] C语言的标准库函数包括一系列日期和时间处理函数,它们都在头文件中说明。下面列出了这些函数。在头文件中定 义了三种类型:time_t,struct tm和clock_t。在头文件 中说明的C语言时间函数 time_t time(time_t *timer); double difftime(time_t time1,time_t time2); struct tm *gmtime(const time_t *timer); struct tm *localtime(const time_t *timer); char *asctime(const struct tm *timeptr); char *ctime(const time_t *timer); size_t strftime(char *s,size_t maxsize,const char *format,const struct tm *timeptr); time_t mktime(struct tm *timeptr); clock_t clock(void); 下面是我从网上收集到的时间函数集 asctime(将时间和日 期以字符串格式表示)相关函数 time,ctime,gmtime,localtime 表头文件#i nclude 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真 实世界所使用的时间日期表示方法,然后将结果以字符串形 态返回。此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993\n" 返回值若再调用相关的 时间日期函数,此字符串可能会被破坏。此函数与ctime不 同处在于传入的参数是不同的结构。附加说明返回一字符 串表示目前当地的时间日期。范例#include

太阳能控制器使用说明书

一、技术参数 工作压力:220V~50Hz 工作环境:-10°~40℃空载功率:4W 温度显示:00℃~99℃测温精度:±2℃ 水位显示:25 50 80 100 漏电动作电流:10mA0.1s 控制增压泵功率:500W 控制电热带功率:500W 控制电加热功率:1500W(可定制3000()w)电磁阀:12V- 工作水压0.02~0.8Mpa (可选装低压阀,工作水压0.01~0.4Mpa) 外形尺寸:1.86×116×42(mm) 二、使用方法 安装完毕,接通电源,控制器开始自检,所有图文符号全亮,并发出蜂鸣提示音,自检结束后显示热水器水箱的水温与水位,如水位低于25,水温≤95℃,自动上水至设置水位。控制器按照出厂设定的参数自动运行。控制器五种模式:智能模式、定时模式、恒温模式、恒水位模式、温控模式。 1、智能模式(出厂设置模式) 4:00启动上水至50水位,5:0C启动加热至50℃,保证早晨起床后的洗漱用水:9:00上水至1 00水位,16:00启动加热至60℃,保证晚上有60℃的水供用户使用;若15:00低于80水位,则再补水至80水位。 2、定时模式 若智能模式不能满足您的需求,持续按“上水”键3秒钟启动定时上水模式,持续按“加热”键3秒钟启动定时加热模式,只能模式关闭。 定时模式出厂参数如下: 第一次定时上水时间为“09:00”,第二次、第三次定时上水时间设置为“一一”。三次上水

设置水位均为“100水位”。“一一”代表该功能未启动(下同)。 第一次定时加热启动时间为16:00,第二次、第三次定时加热启动时间设置为“一一”。 三次定时加热终止温度均为“60℃”。 如果定时模式出厂参数不能满足您的需求,您可以根据您的需求一次作如下设置,设置期间如10秒钟内没有按键动作则自动退出,所修改的内容自动保存。 2-1定时上水时间和水位设置 持续按“上水”键3秒钟,“定时上水”亮,此时智能模式关闭,蜂鸣提示一声。 2.1.1第一次定时上水时间和水位设置:屏幕显示“定时上水、F1”亮,“09”闪烁(09:F1表示第一次定时上水时间为9:00)。然后按V键在00:00-23:00、一一范围内设置第一次定时上水时间。继续按“SET”键,此时“定时上水、XX:F1”亮,“水位”闪烁,按V键在50-100范围内设置第一次定时上水停水水位。 2.1.2第二次定时上水时间和水位设置:继续按SET键,此时“定时上水、F2”亮,“一一”闪烁。然后按SET键,此时定时上水、xx:F2亮,水位闪烁,按V键在50-100范围内设置第二次定时上水停水水位。 2.1.3第三次定时上水时间和水位设置:继续按SET键,此时“定时上水、F2”亮,“一一”闪烁。然后按SET键,此时定时上水、xx:F2亮,水位闪烁,按V键在50-100范围内设置第三次定时上水停水水位。 2.2定时加热启动时间和加热终止温度设置 持续按“加热”键3秒,“定时加热”亮,此时智能模式关闭,蜂鸣提示一声。 2.2.1第一次定时加热启动时间和加热终止温度设置:屏幕显示定时加热、F1亮,1.6闪烁(16:F1表示第一次定时加热时间为16:00).然后按V键在00:00-23:00、一一范围内设置第一次定时加热时间。继续按SET键,此时定时加热、XX:F1亮。60℃闪烁,按V键在40℃-60℃

Qt系统运行时间差计算

Qt系统运行时间差计算 在网上查了很多资料,发觉网上很多用Qt写的系统运行时间差的例子写的都不是很全,今天自己研究了一下,可以成功得显示日时分秒,觉得不错,就与大家分享了 #include #include #include int main(int argc,char*argv[]) { QCoreApplication a(argc,argv); QDateTime now=QDateTime::currentDateTime(); QDateTime Moon_Festival; QDateTime xmas(QDate(now.date().year(),7,26),QTime(0,0)); //QDate(now.date().year()取当前的年分,可以自己设置,比如2012 Moon_Festival=xmas; //这里最大计数为天 //这里涉及到两个函数daysTo()和SecsTo(),他们分别返回差值的天数和秒数,如果有朋友需要精确到毫秒的,QDateTime还提供了一个msecsTo() qDebug()<start(1000);//设置更新时间间隔 timeFlag=1; } }

C语言中常用的库函数

字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin

反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。

C语言编写S函数方法

S函数(system function)是模块的核心,是完成功能实现的关键。S函数的编写可以使用多种程序语言,其中M语言是最常用的,同时也是最简单的。在运用M语言进行s函数编写的时候,可以调用MATLAB提供的函数,简化了开发过程。但是如果要与其他进程通讯或驱动外部硬件接口,则要调用API函数,这样就需要用C语言来开发S函数。较M语言的开发,C语言开发S函数更具有灵活性,但是相对复杂一些。 C语言写S函数,顾名思义,运用C语言语法,依照S函数格式要求,最后在MATLAB中MEX命令编译,编译成功既得函数。 S函数格式可简单看成:初始化、采样时间设定、系统输出、结束四个部分。对应的函数分别为mdlInitializeSizes()、mdlInitializeSampleTimes()、mdlOutputs()、mdlTerminate()。这四个函数是一个S函数必不可少的,缺少任何一个在编译的时候都无法通过,输出信息会提示哪个函数没有写。 一个最基本的C语言S函数模版如下: #define S_FUNCTION_NAME name #define S_FUNCTION_LEVEL 2 #include “” Static void mdlInitializeSizes(SimStruct *S){} Static void mdlInitializeSampleTimes(SimStruct *S){} Static void mdlOutputs(SimStruct *S,int_T tid){} Static void mdlTerminate(SimStruct *S){} #ifdef MATLAB_MEX_FILE #include “” #else #include “” #endif S函数的运行依托于Simulink,Simulink的运行是采用循环方式,计算各采样时间点的系统状态得到的,由此可理解S函数,在初始化之后,S函数也通过循环完成输出状态计算。 结合上述格式,首先自定义S函数名称,然后定义S函数级别,这里写2,1级是老版本Simulink使用的,现已经不是用,之所以保留1级是为了兼容原有的老程序,现在写的S函数都是2级的。接下来将需要的头文件包含进来,这里必须包含文件,这里的SimStruc是Simulink提供的数据结构,S函数中的输入输出等信息都包含在这个结构体中,同时,在编写S函数的时候也要把使用到的C语言库中的头文件包含进来,所有的C语言库文件在这里都可以使用。接下来即可按照格式顺序编写代码。最后要注意,如果用于仿真则添加文件,如果用于RTW 代码生成,则添加头文件。这里的RTW代码生成是指非内嵌的S函数,如果要做一个内嵌的S函数则需要在S函数中添加mdlRTW()函数,并额外编写TLC文件。其中,TLC文件用于优化的C代码生成,mdlRTW()函数则把模块参数传递到生成的代码当中。具体TLC文件的编写方法这里不再赘述。 除了上述必需的函数外,系统提供了其他可选用的函数,功能各异,例如mdlStart()等。 只要理解了Simulink运行方式就可以理解文件的开发过程了,其中,系统函数和特定的变量类型都可以在SimStruct数据结构中找到。至此,基本的S函数都可以编写了。

相关主题
文本预览
相关文档 最新文档