在呼叫系統時間處理時間問題時,需要使用時間函式,使用前需要引入標頭檔案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中。程式例 ...