1. 程式人生 > 實用技巧 >Linux下C語言時間函式總結

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;
}

  

執行結果如下: