
時間
|
393
#include <time.h>
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
假使可以選擇,介面會比較喜歡使用奈秒(而非微秒)的解析度。此外,
timespec
結構
以簡單的
long
取代了令人困惑的
suseconds_t
。所以,自從
timespec
結構被引進之後,
多數與時間有關的介面均轉而使用它,因而可以獲得較高的精確度。然而,正如我們將
看到的,有一個重要的函式仍在使用
timeval
。
實際上,這兩個結構都沒辦法提供它們所陳述的精確度,因為系統時鐘並無法提供奈秒
或甚至是微秒的解析度。然而,在介面中能夠支援這樣的解析度會比較好,這樣不管系
統提供提供哪種解析度它都可以支援。
分解時間
我們將介紹的函式中,有些會在 Unix 時間與字串之間進行轉換,或是以程式設計的方
式建立字串以表示特定的日期。為了協助此過程,C 標準提供了
tm
結構,以便使用人類
可閱讀的格式來表示「經分解的」(broken-down)時間。此結構也定義於
<time.h>
:
#include <time.h>
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* the day of the month */
int tm_mon; /* the ...