标签:blank 返回值 dos 获取 null realtime 时分秒 define 世界
typedef long time_t; #ifndef _TIMESPEC #define _TIMESPEC struct timespec { time_t tv_sec; // seconds long tv_nsec; // and nanoseconds }; #endif
struct timespec有两个成员,一个是秒,一个是纳秒, 所以最高精确度是纳秒。
一般由函数int clock_gettime(clockid_t, struct timespec *)获取特定时钟的时间,常用如下4种时钟:
CLOCK_REALTIME 统当前时间,从1970年1.1日算起
CLOCK_MONOTONIC 系统的启动时间,不能被设置
CLOCK_PROCESS_CPUTIME_ID 本进程运行时间
CLOCK_THREAD_CPUTIME_ID 本线程运行时间
struct tm *localtime(const time_t *clock); //线程不安全
struct tm* localtime_r( const time_t* timer, struct tm* result );//线程安全
size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );
timeval是一个结构体,在time.h中定义为: struct timeval { __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ }; 其中,tv_sec为Epoch(1970-1-1零点零分)到创建struct timeval时的秒数,tv_usec为微秒数,即秒后面的零头。
struct tm { int tm_sec; /*代表目前秒数,正常范围为0-59,但允许至61秒 */ int tm_min; /*代表目前分数,范围0-59*/ int tm_hour; /* 从午夜算起的时数,范围为0-23 */ int tm_mday; /* 目前月份的日数,范围01-31 */ int tm_mon; /*代表目前月份,从一月算起,范围从0-11 */ int tm_year; /*从1900 年算起至今的年数*/ int tm_wday; /* 一星期的日数,从星期一算起,范围为0-6。*/ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /*日光节约时间的旗标DST. [-1/0/1]*/ };
#include <time.h> #include <stdio.h> #include <dos.h> int main(void) { time_t t; t = time(NULL); printf("The number of seconds since January 1, 1970 is %ld",t); return 0; } 程序例2: //time函数也常用于随机数的生成,用日历时间作为种子。 #include <stdio.h> #include <time.h> #include<stdlib.h> int main(void) { int i; srand((unsigned) time(NULL)); printf("ten random numbers from 0 to 99\n\n"); for(i=0;i<10;i++) printf("%d\n",rand()%100); return 0; } 程序例3: 用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。 #include <stdio.h> #include <stddef.h> #include <time.h> int main(void) { time_t timer;//time_t就是long int 类型 struct tm *tblock; timer = time(NULL);//这一句也可以改成time(&timer); tblock = localtime(&timer); printf("Local time is: %s\n",asctime(tblock)); return 0; }
gmtime()函数 原 型:struct tm *gmtime(long *clock);
功 能:把日期和时间转换为格林威治(GMT)时间的函数。将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。
|
#include "stdio.h" #include "time.h" #include "stdlib.h" int main(void) { time_t t; struct tm *gmt, *area; tzset(); /* tzset()设置时区*/ t = time(NULL); area = localtime(&t); printf("Local time is: %s", asctime(area)); gmt = gmtime(&t); printf("GMT is: %s", asctime(gmt)); return 0; }
程序例1: #include <stdio.h> #include <stddef.h> #include <time.h> int main(void) { time_t timer;//time_t就是long int 类型 struct tm *tblock; timer = time(NULL); tblock = localtime(&timer); printf("Local time is: %s\n",asctime(tblock)); return 0; } 执行结果: Local time is: Mon Feb 16 11:29:26 2009 程序例2: 上面的例子用了asctime函数,下面这个例子不使用这个函数一样能获取系统当前时间。 需要注意的是年份加上1900,月份加上1。 #include<time.h> #include<stdio.h> int main() { struct tm *t; time_t tt; time(&tt); t=localtime(&tt); printf("%4d年%02d月%02d日 %02d:%02d:%02d\n", t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); return 0; }
头文件:#include<windows.h>
定义函数:unsigned sleep(unsigned seconds);
函数说明:此函数执行挂起一段时间。
example:(对于windows+codeblocks下,Sleep(),单位为ms)
#include<stdio.h> #include<windows.h> main() { int i,j; i=time((time_t*)NULL); Sleep(2000); //延迟2s j=time((time_t*)NULL); printf("延时了%d秒",j-i); }
函数定义:clock_t clock(void) ;
函数说明:该程序从启动到函数调用占用CPU的时间。
example:
#include<stdio.h> #include<windows.h> main() { int i,j; Sleep(2000); i=clock(); Sleep(2000); j=clock(); printf("开始%d\n结束%d\n经过%d\n",i,j,j-i); }
头文件: #include <unistd.h>
功 能: usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒);
语 法: void usleep(int micro_seconds);
返回值: 无
内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。
注 意:
这个函数不能工作在windows 操作系统中。用在Linux的测试环境下面。
参 见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
如果延迟时间为几十毫秒(1ms = 1000us),或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
时钟换算:
微秒,时间单位,符号us(英语:microsecond ).
1微秒等于百万分之一秒(10的负6 次方秒)
0.000 001 微秒 = 1皮秒
0.001 微秒 = 1纳秒
1,000 微秒 = 1毫秒
1,000,000 微秒 = 1秒
1s = 1000ms
1ms = 1000μs
1μs = 1000ns
1ns = 1000ps
标签:blank 返回值 dos 获取 null realtime 时分秒 define 世界
原文地址:https://www.cnblogs.com/tianzeng/p/9194851.html