
注意
1.精确级别,纳秒级别
原型
long clock_gettime (clockid_t which_clock, struct timespec *tp);
头文件time.h
which_clock参数解释
CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变
CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响
CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间
CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间
1 struct timespec {
2 time_t tv_sec; /* seconds */
3 long tv_nsec; /* nanoseconds */
4 };
#include <stdio.h>
#include <time.h> struct timespec diff(struct timespec start,struct timespec end)
{
struct timespec temp;
if((end.tv_nsec-start.tv_nsec)<)
{
temp.tv_sec = end.tv_sec-start.tv_sec-;
temp.tv_nsec = + end.tv_nsec-start.tv_nsec;
}
else
{
temp.tv_sec = end.tv_sec-start.tv_sec;
temp.tv_nsec = end.tv_nsec-start.tv_nsec;
}
return temp;
} int main()
{
struct timespec time1,time2,temp;
int i;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
for(i=; i<;i++)
{
;
}
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
temp = diff(time1, time2);
printf("%d:%d\n", temp.tv_sec, temp.tv_nsec);
return ;
}
#include<stdio.h>
#include<time.h> int main()
{
struct tm *ptr;
time_t lt;
lt=time(NULL); ptr=localtime(<); printf("second:%d\n",ptr->tm_sec);
printf("hour:%d\n",ptr->tm_hour); }
~
size_t
strftime
(
char
*strDest,
size_t
maxsize,
const
char
*format,
const
struct
tm
*timeptr
);
#include<stdio.h>
#include<time.h> int main()
{
struct tm* newtime;
char tmp[]; time_t lt1;
time(<1); newtime=localtime(<1); strftime(tmp,,"today is %A,day %d of $B in the year %Y.\n",newtime);
printf("%s\n",tmp);
}
struct tm *ttime;
char now[];
time_t tt; memset(now, , );
tt = time(NULL);
ttime = localtime(&tt);
strftime(now, , "%Y-%m-%d %H:%M:%S", ttime);
clock函数使用:
http://www.cnblogs.com/youxin/archive/2012/04/15/2450242.html
计算持续时间的长度
有时候在实际应用中要计算一个事件持续的时间长度,比如计算打字速度。在第1节计时部分中,我已经用clock函数举了一个例子。Clock()函数可以精确到毫秒级。同时,我们也可以使用difftime()函数,但它只能精确到秒。该函数的定义如下:
double difftime(time_t time1, time_t time0);
虽然该函数返回的以秒计算的时间间隔是double类型的,但这并不说明该时间具有同double一样的精确度,这是由它的参数觉得的(time_t是以秒为单位计算的)。
更多:
http://blog.csdn.net/limi0066/article/details/1761564
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
}