1. 程式人生 > >時間相關函數

時間相關函數

信息 div long end code align 結構 return rect

1.簡介

在C中可以使用gettimeofday()來獲取時間

2.函數原型

#include<sys/time.h>

int gettimeofday(struct  timeval*tv,struct  timezone *tz )

3.說明

gettimeofday()會把目前的時間用tv 結構體返回,當地時區的信息則放到tz所指的結構中timeval

4.相關結構體

struct timeval

{

long tv_sec;/*秒*/

long tv_usec;/*微妙*/

};

struct timezone

{

int tz_minuteswest;/*和greenwich 時間差了多少分鐘*/

int tz_dsttime;/*type of DST correction*/

}

在gettimeofday()函數中tv或者tz都可以為空。如果為空則就不返回其對應的結構體。函數執行成功後返回0,失敗後返回-1,錯誤代碼存於errno中。

5.實例一

#include<stdio.h>
#include<sys/time.h>
#include<unistd.h>
 
int main()
{
        struct  timeval    tv;
        struct  timezone   tz;
        gettimeofday(
&tv,&tz); printf(“tv_sec:%d\n”,tv.tv_sec); printf(“tv_usec:%d\n”,tv.tv_usec); printf(“tz_minuteswest:%d\n”,tz.tz_minuteswest); printf(“tz_dsttime:%d\n”,tz.tz_dsttime); }
運行結果:

tv_sec:1502078425
tv_usec:920295
tz_minuteswest:-480
tz_dsttime:0

說明:在使用gettimeofday()函數時,第二個參數一般都為空,因為我們一般都只是為了獲得當前時間,而不用獲得timezone的數值

實例二 測程序的大致執行時間

#include<stdio.h>
#include<sys/time.h>
#include<unistd.h>
 
int delay(int time)
{
    int i,j; 
    for(i =0;i<time;i++)
        for(j=0;j<5000;j++)
            ;
}
 
int main()
{
        struct  timeval start;
        struct  timeval end;
       
        unsigned  long diff;
        gettimeofday(&start,NULL);
        delay(10);
        gettimeofday(&end,NULL);
     diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;
        printf(“thedifference is %ld\n”,diff);
        return 0;
       
}

時間相關函數