C語言時間函式

2021-07-06 07:40:11 字數 3002 閱讀 5019

在呼叫系統時間處理時間問題時,需要使用時間函式,使用前需要引入標頭檔案time.h。

time_t time(time_t *t);

time函式會返回從公元2023年1月1日的utc時間從0時0分0秒算起到現在所經過的秒數。引數t是乙個指標,如果不是乙個空指標,函式也會將返回值存到t指標所指的記憶體單元中。time_t是「time.h」標頭檔案中定義的乙個資料型別,表示乙個時間的秒數,相當於乙個長整型變數。如果t是乙個空指標,函式會返回乙個time_t型長整型數。

demo:

time_t lt;

time(<);

printf("now time:%ld\n",lt);

struct tm *gmtime(time_t *timep);

取當前時間函式gmtime:函式gmtime的作用是將time_t表示秒數的時間轉換為人可以理解的時間。這個函式的使用方法如下所示。

從上面的使用方法可知,函式的引數是乙個表示當前時間秒數的指標。返回值是乙個tm型別的結構體指標。tm結構體是「time.h」標頭檔案中定義的,定義方法和成員如下所示。

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:從2023年算起至今的年數。

int tm_wday:一星期的日數,從星期一算起,範圍是0-6。

int tm_yday:從本年1月1日算起至今的天數,範圍為0-365。

int tm_isdst:是不是使用了夏令時間。如果為1表示使用了夏令時,為0則表示沒有使用夏令時。

demo:

struct tm *p_tm;

time_t lt;

time(<);

printf("now time:%ld\n",lt);

p_tm=gmtime(<);

printf("%d年%d月%d日 %d:%d:%d\n",p_tm->tm_year+1900,p_tm->tm_mon+1,p_tm->tm_mday,p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);

char *ctime(time_t *timep);

字串格式時間函式ctime:函式ctime的作用是將乙個時間返回成乙個可以識別的字串格式。這個函式的使用方法如下所示。

char * asctime(struct tm * timeptr);

字串格式時間函式asctime:函式asctime的作用是將乙個tm格式的時間轉換為乙個字串格式。這個函式的使用方法如下所示。

struct tm *localtime(time_t * timep);

取得當地時間函式localtime:函式localtime的作用是返回tm格式的當地時間。與gmtime函式不同的是,gmtime函式返回的是乙個utc時間。localtime時間的使用方法如下所示。

time_t mktime(tm * timeptr);

將時間轉換成秒數函式mktime:函式mktime的作用是將乙個tm結構型別的時間轉換成秒數時間。該函式的使用方法如下所示。

demo:

struct tm *p_tm;

time_t lt;

time(<);

printf("now time:%ld\n",lt);

p_tm=gmtime(<);

printf("%d年%d月%d日 %d:%d:%d\n",p_tm->tm_year+1900,p_tm->tm_mon+1,p_tm->tm_mday,p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);

printf(ctime(<));

printf(asctime(p_tm));

p_tm->tm_year=2014-1900; //賦值年份

printf("pass time:%ld\n",mktime(p_tm));

需要引入標頭檔案sys/time.h

int gettimeofday ( struct timeval * tv , struct timezone * tz )

取得目前的時間函式gettimeofday:前面所講到的時間函式只能把時間精確到秒。如果對時間的處理精度為微秒級,需要使用函式gettimeofday。一微秒等於百萬分之一秒。

這個函式的引數是兩個結構體指標。這兩個結構體的定義如下所示。

struct timeval

;結構體成員的含義如下所示。

tv_sec:當前時間的秒數。

tv_usec:當前時間的微秒數。

struct timezone;

結構體成員的含義如下所示。

tz_minuteswest:與utc時間相差的分鐘數。

tz_dsttime:與夏令時間相差的分鐘數。

函式gettimeofday會把當前時間的這些引數返回到這兩個結構體指標上。如果處理成功,則返回真值1,否則返回0。這個函式的使用例項如下所示。

demo:

struct timeval tv;

struct timezone tz;

gettimeofday(&tv,&tz);

printf("second:%ld,usecond:%ld\n",tv.tv_sec,tv.tv_usec);

int settimeofday (struct timeval *tv, struct timezone *tz);

設定當前時間函式settimeofday:函式settimeofday的作用是設定當前的系統時間。只有root使用者登陸以後才有許可權進行這個操作。

c語言時間函式

include 1.獲得日曆時間 實際上是長整型,從乙個時間點 一般是1970年1月1日0時0分0秒 到此時的秒數 time t的值由函式time 獲得 time t time time t timer eg time t t time null struct tm struct tm的值由函式lo...

C語言時間操作函式

一 獲取日曆時間 time t是定義在time.h中的乙個型別,表示乙個日曆時間,也就是從1970年1月1日0時0分0秒到此時的秒數,原型是 typedef long time t time value 可以看出time t其實是乙個長整型,由於長整型能表示的數值有限,因此它能表示的最遲時間是203...

C語言時間函式積累(一)

time 用法 time t time time t t 功能 此函式返回從公元1970年1月1日的utc時間從0時0分0秒算起到現在所經過的秒數。如果t並非空指標,此函式也會將返回值存到t指標所指的記憶體。返回值 成功,返回秒數,失敗則返回 time t 1 值,錯誤原因存於errno中。程式例 ...