gettimeofday及其相關時間函數


1gettimeofday函數:獲取到當前時間的秒數。

該函數的頭文件在/usr/include/sys/time.h頭文件中。

函數原型:int gettimeofday(struct timeval*tv, struct timezone *tz);

用到兩個結構體: timeval  timezone

這兩個結構體定義在/usr/include/linux/time.h頭文件中。

 

 

 

一秒=1000000微秒

 

 

 

 函數作用:會把得到從197011000秒到現在的秒數返回到第一個參數指向的結構體中,第二個參數是關於時區,如果不考慮填入NULL

函數成功返回0,否則返回-1錯誤代碼存於errno。

可以利用該函數來計算一個程序的運行時間,只需在程序前后調用該函數,並且后來的函數時間減去開始的函數時間就可以。注意單位的轉變。

 

2、time()函數:獲取到當前時間的秒數。

time函數聲明:time_t time(time_t *t)

頭文件:<time.h>

由聲明可知,這里有一個特殊類型 time_t類型 ;相當於 long int 類型。函數參數為time_t類型變量的地址。

eg:

 

 

 time函數接收time_t類型的變量地址為參數,計算返回19701100:00:00 到現在的秒數,並存儲在變量中。在實際使用中,一般希望得到的是標准的時間格式,現在只得到了秒數,接下來應該把得到的秒數轉換為時間格式,所以就需要用到localtime()和strftime()函數。只有這些組合使用才能得到標准格式的時間。

特殊:timeNULL);該函數會返回從1970到現在的秒數,但不保存。

 

3localtime函數:返回指向tm結構的指針,並且按輸入的秒數填寫結構。

函數聲明:struct tm *localtime(const time_t *timer)

由此可見:該函數接收一個time_t類型的變量地址。

該函數返回指向 tm 結構的指針,該結構帶有被填充的時間信息

tm 結構體:

 

struct tm { int tm_sec; /* 秒,范圍從 0 到 59                */ int tm_min; /* 分,范圍從 0 到 59                */ int tm_hour; /* 小時,范圍從 0 到 23                */ int tm_mday; /* 一月中的第幾天,范圍從 1 到 31     */ int tm_mon; /* 月份,范圍從 0 到 11                */ int tm_year; /* 自 1900 起的年數                */ int tm_wday; /* 一周中的第幾天,范圍從 0 到 6         */ int tm_yday; /* 一年中的第幾天,范圍從 0 到 365     */ int tm_isdst; /* 夏令時                        */     };

 

  該函數作用是返回指向tm結構的指針,並且按輸入的秒數填寫結構。localtime函數會把秒數划分為各個點時間,但是這樣想要輸出的話只能輸出多個類型;此時應該用到strftime()函數來整合這個被填充了的tm結構;並輸出。

asctime函數:

該函數接收一個指向tm的指針,並且把tm結構體的內容轉換格式,返回一個指向字符串的指針。

 

 

 

 

 4、strftime()和strptime()函數

strptime()函數:把時間格式字符串,按一定格式存儲到tm結構體中。 

函數聲明:char *strptime(const char *buf,const char *format,struct tm *timeptr)

該函數有三個參數:

  • 時間格式字符串,
  • 時間格式。
  • tm 結構體的指針    

例子: struct   tm   tm_ptr 

    strptime("2020-07-29 00:00","%Y-%m-%d %H:%M",&tm_ptr);  該函數的作用是,把第一個參數對應的時間字符串,存儲到tm_ptr結構體中,第二個參數格式要和第一個參數的格式一致。然后再通過strftime()函數轉換成想要的時間格式。

  

strftime函數:

函數聲明:size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

該函數有四個參數,

  • str -- 這是指向目標數組的指針,用來復制產生的 C 字符串。
  • maxsize -- 這是被復制到 str 的最大字符數。
  • format -- 這是 C 字符串,包含了普通字符和特殊格式說明符的任何組合。這些格式說明符由函數替換為表示 tm 中所指定時間的相對應值
  • timeptr -- 這是由localtime函數返回的指向tm結構體的指針。

該函數的作用是,把timeptr指向的結構體內容,根據format格式轉換,並且存儲在str中。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM