常用C函式庫
阿新 • • 發佈:2021-07-29
時間類
簡介
time.h標頭檔案定義了四個變數型別,兩個巨集和各種操作日期和時間的函式
types
序號 | types | 描述 | 定義 |
---|---|---|---|
1 | size_t | 無符號整數型別,它是sizeof關鍵字的結果 | long unsigned int |
2 | clock_t | 用來儲存處理器的CLOCKS,也就是CPU ticks,通常配合一個巨集CLOCKS_PER_SEC,用來計算時間 | 這個OS所在的CPU結構,是一個無符號整型數 |
3 | time_t | seconds since the Epoch(1970-1-1 00:00:00 UTC) | 是一個無符號整型數 |
4 | struct tm | 用來儲存時間和日期 | 見下面 |
tm結構定義如下:
struct tm { int tm_sec; //seconds,[0-59] int tm_min; //minutes,[0-59] int tm_hour; //hours,[0-23] int tm_mday; //day,[1-31] int tm_mon; //month,[0-11],這個要注意月份是從零開始的 int tm_year; //now year - 1900,這是從1900年開始減的,而不是從1970開始的 int tm_wday; //day of week.[0-6],星期數是從0開始的 int tm_yday; //days in year.[0-365] int tm_isdst //是不是夏時令 }
巨集
序號 | 巨集 | 描述 |
---|---|---|
1 | NULL | 空指標的常量值 |
2 | CLOCKS_PER_SEC | 一秒鐘有多少ticks |
函式
序號 | 函式 | 描述 | 執行緒安全 |
---|---|---|---|
1 | time_t time(time_t *seconds) | 返回自1970-01-01 00:00:00 UTC到現在,共過了多少秒(calendar seconds)。常配合difftime函式用來計算時間差 | |
2 | double difftime(time_t time1,time_t time0) | 得到time1-time0的秒差 | 是 |
3 | char* ctime(const time_t *p_time) | 將得到秒數轉換為日曆字串(calendar string),本地時區 | 否 |
4 | char* ctime_r(const time_t *p_time, char *buf) | 將得到秒數轉換為日曆字串(calendar string),本地時區 | 是 |
5 | struct tm* gmtime(const time_t *timer) | 用秒數值計算出tm中的各個值,並用協調世界時(UTC)也被稱為格林尼治標準時間(GMT)表示。 | 否 |
6 | struct tm* gmtime_r(const time_t *timer, struct tm *result) | 用秒數值計算出tm中的各個值,採用協調世界時(UTC)也被稱為格林尼治標準時間(GMT)時區。 | 是 |
7 | struct tm* localtime(const time_t* timer) | 用秒數值計算出tm中的各個值,採用本地時區 | 否 |
8 | struct tm* localtime_r(const time_t* timer, struct tm *result) | 用秒數值計算出tm中的各個值,採用本地時區 | 是 |
9 | char* asctime(const struct tm* timeptr) | 將tm結構體的內容轉為字串 | 否 |
10 | char* asctime_r(const struct tm* timeptr, char buf[]) | 將tm結構體的內容轉為字串 | 是 |
11 | time_t mktime(struct tm* timeptr) | 由tm結構體計算出一個本地時區calendar seconds | 是 |
12 | size_t strftime(char* str,size_t maxsize,const char* format,const struct tm* timeptr) | 由tm結構體,按指定格式format生成字串 | 是 |
13 | clock_t clock(void) | 獲得CPU的執行ticks,若想得到執行時間,就要除以CLOCKS_PER_SEC | 是 |