Linux C時間庫函數關聯關系圖如下:
C 庫函數 - time()
描述
C 庫函數 time_t time(time_t *seconds) 返回自紀元 Epoch(1970-01-01 00:00:00 UTC)起經過的時間,以秒為單位。如果 seconds 不為空,則返回值也存儲在變量 seconds 中。
聲明
下面是 time() 函數的聲明。
time_t time(time_t *t)
參數
seconds -- 這是指向類型為 time_t 的對象的指針,用來存儲 seconds 的值。
返回值
以 time_t 對象返回當前日歷時間。
C 庫函數 - localtime()
描述
C 庫函數 struct tm *localtime(const time_t *timer) 使用 timer 的值來填充 tm 結構。timer 的值被分解為 tm 結構,並用本地時區表示。
聲明
下面是 localtime() 函數的聲明。
struct tm *localtime(const time_t *timer)
參數
timer -- 這是指向表示日歷時間的 time_t 值的指針。
返回值
該函數返回指向 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; /* 夏令時 */ }
C 庫函數 - gmtime()
描述
C 庫函數 struct tm *gmtime(const time_t *timer) 使用 timer 的值來填充 tm 結構,並用協調世界時(UTC)也被稱為格林尼治標准時間(GMT)表示。
聲明
下面是 gmtime() 函數的聲明。
struct tm *gmtime(const time_t *timer)
參數
timeptr -- 這是指向表示日歷時間的 time_t 值的指針。
返回值
該函數返回指向 tm 結構的指針,該結構帶有被填充的時間信息。
C 庫函數 - mktime()
描述
C 庫函數 time_t mktime(struct tm *timeptr) 把 timeptr 所指向的結構轉換為一個依據本地時區的 time_t 值。
聲明
下面是 mktime() 函數的聲明。
time_t mktime(struct tm *timeptr)
參數
timeptr -- 這是指向表示日歷時間的 time_t 值的指針,該日歷時間被分解為以下各部分。
返回值
該函數返回一個 time_t 值,該值對應於以參數傳遞的日歷時間。如果發生錯誤,則返回 -1 值。
C 庫函數 - ctime()
描述
C 庫函數 char *ctime(const time_t *timer) 返回一個表示當地時間的字符串,當地時間是基於參數 timer。
返回的字符串格式如下: Www Mmm dd hh:mm:ss yyyy 其中,Www 表示星期幾,Mmm 是以字母表示的月份,dd 表示一月中的第幾天,hh:mm:ss 表示時間,yyyy 表示年份。
聲明
下面是 ctime() 函數的聲明。
char *ctime(const time_t *timer)
參數
timer -- 這是指向 time_t 對象的指針,該對象包含了一個日歷時間。
返回值
該函數返回一個 C 字符串,該字符串包含了可讀格式的日期和時間信息
C 庫函數 - asctime()
描述
C 庫函數 char *asctime(const struct tm *timeptr) 返回一個指向字符串的指針,它代表了結構 struct timeptr 的日期和時間。
聲明
下面是 asctime() 函數的聲明。
char *asctime(const struct tm *timeptr)
參數
timeptr 是指向 tm 結構的指針。
返回值
該函數返回一個 C 字符串,包含了可讀格式的日期和時間信息 Www Mmm dd hh:mm:ss yyyy,其中,Www 表示星期幾,Mmm 是以字母表示的月份,dd 表示一月中的第幾天,hh:mm:ss 表示時間,yyyy 表示年份。
C 庫函數 - strftime()
描述
C 庫函數 size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) 根據 format 中定義的格式化規則,格式化結構 timeptr 表示的時間,並把它存儲在 str 中。
聲明
下面是 strftime() 函數的聲明。
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
參數
str -- 這是指向目標數組的指針,用來復制產生的 C 字符串。 maxsize -- 這是被復制到 str 的最大字符數。 format -- 這是 C 字符串,包含了普通字符和特殊格式說明符的任何組合。這些格式說明符由函數替換為表示 tm 中所指定時間的相對應值。 timeptr -- 這是指向 tm 結構的指針。
返回值
如果產生的 C 字符串小於 size 個字符(包括空結束字符),則會返回復制到 str 中的字符總數(不包括空結束字符),否則返回零。
具體實例如下:
#include <stdio.h> #include <time.h> int main() { time_t t_time; struct tm *tm_time; char *c_time; char timestr[512] = {0}; t_time = time(NULL); tm_time = gmtime(&t_time); //轉換成國際標准時間 printf("gmtime : %d:%d:%d %d:%d:%d\n", 1900+tm_time->tm_year, tm_time->tm_mon, tm_time->tm_mday, tm_time->tm_hour, tm_time->tm_min, tm_time->tm_sec); //轉換成本地時間 tm_time = localtime(&t_time); printf("localtime : %d:%d:%d %d:%d:%d\n", 1900+tm_time->tm_year, tm_time->tm_mon, tm_time->tm_mday, tm_time->tm_hour, tm_time->tm_min, tm_time->tm_sec); //轉換成字符串 c_time = ctime(&t_time); printf("ctime : %s\n", c_time); //轉換成字符串 c_time = asctime(tm_time); printf("asctime : %s\n", c_time); //格式化輸出 strftime(timestr, sizeof(timestr), "%F %T", tm_time); printf("strftime : %s\n", timestr); return 0;
}
運行結果如下: