Linux應用程式學習之時間函式

2021-07-03 05:39:10 字數 2752 閱讀 4207

linux應用程式學習之時間函式

這一課我學習了linux中與時間相關的函式程式設計,下面我就來介紹這些函式。linux中與時間相關的函式有不少,而且還有分類,有顯示為日曆時間,有顯示為標準時間,有顯示為本地時間的,下面我們就來介紹一些相關函式,當然在前面我說過在linux終端中採用man命令可以很清楚的檢視到相關函式的資訊,所以在此我只列出函式的原型以及一些必要的解釋,詳細的描述大家可在linux下面採用man命令來檢視。

(1)獲取日曆時間函式

time_t time(time_t *t);

需要注意的是這個time_t型別符其實就是我們的int型,只是linux下面為了好辨認,重新定義了乙個名字,該函式能獲取日曆時間,何為日曆時間?所謂的日曆時間就是從2023年1月1日0時0分0秒到現在的時間,並且該函式返回值為以秒計的時間。至於為什麼取這個時間為起始,大家可以自己網上了解下,應該是跟計算機位數有關係,取得乙個綜合的時間的。該函式的引數的意義是,如果其不為空指標(null),則函式返回的日曆時間將會被存放在該指標所指向的記憶體位置,否則不存放。

(2)獲取標準時間,也就是我們所說的格林威治時間

struct  tm*gmtime(const time_t *timep);

struct tm ;

具體成員的含義看名字應該就有所了解,後面我們會以乙個例子來讓大家直觀了解。

(3)獲取本地時間,也就是我們計算機顯示的時間

struct tm *localtime(consttime_t *timep);

這個函式跟上面獲取格林威治時間函式類似,引數和返回值都一樣,因此就不詳細解釋了。

(4)以字串方式顯示時間

char * asctime(const struct tm*);

char * ctime(const time_t *timep);

所謂的以字串方式顯示時間,就是顯示方式類似我們linux下面date命令後時間的顯示方式,也是我們比較習慣的顯示方式,這個有這兩個函式,返回值都為字元指標,只不過前乙個函式引數是乙個struc tm*型別,後面乙個為待轉化的日曆時間型別,根據具體的型別,我們就可以呼叫不同的函式了。

(5)獲取高精度時間

int gettimeofday(structtimeval *tv , struct timezone *tz);

這個函式可以將時間獲取精確到微秒級別,所以稱為高精度獲取時間。我們需要注意該函式的引數和返回值,我們呼叫這個函式的時候,系統將獲取的時間存放在第乙個引數中,也就是struct timeval這個結構體中,這個結構體原型為

structtimeval

time_t       tv_sec;

suseconds_t   tv_usec;

第乙個引數為存放的秒數,第二個引數為存放微秒數,而這個函式的返回值不是時間,而是乙個標誌,如果系統正確將時間存放在這個結構體中,返回值為0,否則為-1,至於該函式的第二個引數,其一般指定為null,即空指標。

下面我們就以乙個程式來說明這些函式的具體功能,需要說明的是,我們要正確新增我們相關函式的標頭檔案,不然會出錯,函式所在標頭檔案我們可以通過man命令檢視。在程式中,我已在必要的地方做好了注釋,程式如下所示:

#include

#include

#include

void main()

time_t caltime;

struct tm *stime;

struct tm *ltime;

struct timeval *tv;

char *astime;

char *cstime;

caltime = time(null);        //獲取日曆時間函式

printf("the calendar time is %d\n" , caltime);    

stime = gmtime(&caltime);   //通過gmtime函式將日曆時間轉化為標準時間

printf("the standard is %d hour , %d min ,%d sec\n" ,stime->tm_hour ,stime->tm_min , stime->tm_sec); 

ltime = localtime(&caltime); //通過localtime函式可以將日曆時間轉化為本地時間

printf("the user_zone time is %d hour , %d min ,%d sec\n",ltime->tm_hour,ltime->tm_min,ltime->tm_sec);   

astime = asctime(ltime);

printf("the string time is %s\n" , astime);

cstime = ctime(&caltime);  //astime和cstime函式都是返回時間的字串形式,只是引數有所差別

printf("the ctime time is %s\n" , cstime);         

gettimeofday(tv , null);    //呼叫gettimeofday函式可以獲取更加精確的時間,可達到微妙級

printf("the second = %d ,micsecond = %d\n ",tv->tv_sec,tv->tv_usec);/

通過在linux下面執行該程式,我們可以得到如下結果,

好了,這就是我學習linux下時間函式的知識總結,大家可以試著寫一下,同時希望得到大家的批評指正。

Linux應用程式設計之時間程式設計

一 時間的型別 1 格林威治標準時間 coordinated universal time utc 是世界標準時間,即常說的格林威治標準時間 greenwich mean time,gmt 注 格林威治時間和本地時間不同 2 日曆時間 日曆時間 calendar time 是用 乙個標準時間點 如 ...

Linux應用程式設計 時間程式設計

相關標頭檔案 time.h 是iso c99 標準日期標頭檔案。sys time.h 是linux系統的日期標頭檔案。注 sys time.h 通常會包含include time.h structure crudely representing a timezone.this is obsolete...

LINUX學習筆記 (1)編寫應用程式

本章節主要介紹如何編寫應用程式執行在基於arm的linux上。對於linux來說一切裝置皆檔案,比如開發板上的led,在驅動程式中可以設定檔名為led,存放在 dev目錄中。可以使用open ioctl等函式讀寫。led.c include include include include inclu...