歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 有關Linux時間函數的總結

有關Linux時間函數的總結

日期:2017/2/28 16:00:09   编辑:Linux教程

首先搞清楚兩個概念:

1、日歷時間(Calendar Time)是通過time_t數據類型來表示的,用time_t表示的時間(日歷時間)是從一個時間點(例如:1970年1月1日0時0分0秒)到此時的秒數。在time.h中,我們也可以看到time_t是一個長整型數。

2、在標准C/C++中,我們可通過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代表一月) - 取值區間為[0,11] */
int tm_year; /* 年份,其值等於實際年份減去1900 */
int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */
int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。www.linuxidc.com 不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};

所以 現在詳解以下幾個函數:

1、asctime(將時間和日期以字符串格式表示)

char * asctime(const struct tm * timeptr):

函數說明
asctime()將參數timeptr所指的tm結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果以字符串形態返回。此函數已經由時區轉換成當地時間,字符串格式為:“Wed Jun 30 21:49:08 1993\n”

返回值
若再調用相關的時間日期函數,此字符串可能會被破壞。此函數與ctime不同處在於傳入的參數是不同的結構。

2、char *ctime(const time_t *timep);
(將時間和日期以字符串格式表示):

函數說明:將參數timep所指的time_t結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果以字符串形態返回。

3、int gettimeofday(struct timeval * tv , struct timezone * tz ):

函數說明:gettimeofday()會把目前的時間有tv所指的結構返回,當地時區的信息則放到tz結構中。

timeval結構:


struct timeval{
long tv_sec; /*秒*/
long tv_usec; /*微秒*/
};

timezone結構:

struct timezone{
int tz_minuteswest; /*和Greenwich 時間差了多少分鐘*/
int tz_dsttime; /*日光節約時間的狀態*/
};

4、struct tm*gmtime(const time_t*timep);

函數說明:

gmtime()將參數timep 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,www.linuxidc.com 然後將結果由結構tm返回。

5、struct tm *localtime(const time_t * timep);

函數說明:將參數timep 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。此函數返回的時間日期已經轉換成當地時區。

6、mktime(將時間結構數據轉換成經過的秒數)

time_t mktime(strcut tm * timeptr);


函數說明:mktime()用來將參數timeptr所指的tm結構數據轉換成從公元1970年1月1日0時0分0 秒算起至今的UTC時間所經過的秒數。

7、settimeofday(設置目前時間)

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


函數說明:settimeofday()會把目前時間設成由tv所指的結構信息,當地時區信息則設成tz所指的結構。詳細的說明請參考gettimeofday()。注意,只有root權限才能使用此函數修改時間。

8、time(取得目前的時間)

time_t time(time_t *t);

函數說明此函數會返回從公元1970年1月1日的UTC時間從0時0分0秒算起到現在所經過的秒數。如果t 並非空指針的話,此函數也會將返回值存到t指針所指的內存。

Copyright © Linux教程網 All Rights Reserved