時間相關函數
阿新 • • 發佈:2017-08-07
信息 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; }
時間相關函數