Linux下C語言時間函式總結
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;
}
執行結果如下: