Linux下的時間函式以及格式化輸出時間

2021-08-01 14:43:50 字數 1638 閱讀 2647

我們在程式設計中可能會經常用到時間,比如取得系統的時間(獲取系統的年、月、日、時、分、秒,星期等),或者是隔一段時間去做某事,那麼我們就用到一些時間函式。

linux下儲存時間常見的有兩種儲存方式,乙個是從2023年到現在經過了多少秒,乙個是用乙個結構來分別儲存年月日時分秒的。

time_t 這種型別就是用來儲存從2023年到現在經過了多少秒。

struct timeval結構,可以更精確,它精確到微妙。

struct timeval

;而直接儲存年月日的是乙個結構:

struct tm

;需要特別注意的是,年份是從2023年起至今多少年,而不是直接儲存如2023年,月份從0開始的,0表示一月,星期也是從0開始的, 0表示星期日,1表示星期一。

下面介紹一下我們常用的時間函式:

#include

char *asctime(const struct tm* timeptr);

將結構中的資訊轉換為真實世界的時間,以字串的形式顯示。

char *ctime(const time_t *timep);

將timep轉換為真是世界的時間,以字串顯示,它和asctime不同就在於傳入的引數形式不一樣。

double difftime(time_t time1, time_t time2);

返回兩個時間相差的秒數。

int

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

返回當前距離2023年的秒數和微妙數,後面的tz是時區,一般傳 null。

struct tm* gmtime(const time_t *timep);

將time_t表示的時間轉換為沒有經過時區轉換的utc時間,是乙個struct tm結構指標。

stuct tm*

localtime(const time_t *timep);

和gmtime類似,但是它是經過時區轉換的時間。

time_t mktime(struct tm* timeptr);

將struct tm 結構的時間轉換為從2023年至今的秒數。

time_t

time(time_t *t); 

取得從2023年1月1日至今的秒數。

size_t

strftime(char *s, size_t max, const char *format,const struct tm *tm);

格式化日期和時間,並輸出到字串s中

舉例:gettimeofday & localtime & strftime

#include #include #include int main (void)

; gettimeofday (&tv, null);

time = tv.tv_sec;

struct tm* p_time = localtime(&time);

strftime(str_t, 26, "%y-%m-%d %h:%m:%s\n", p_time);

printf ("%s\n", str_t);

return 0;

}

輸出結果:

2017-05-24 22:42:08

BGP的訊息型別以及格式

bgp是建立在tcp之上的協議,tcp埠號179 1 open 開啟訊息 2 keepalive 存活訊息 3 update 更新訊息 4 notification 報錯訊息 bgp的所有訊息都會以該頭開始 maker 16位元組 全為1,標識bgp報文邊界 length 2位元組 bgp包全長,長...

Django 獲取當前時間 以及格式化日期的方法

timezone.now 返回的是當前時間,utc。格式化時間字串的方法 strftime y m d h m s 注意,除了 m 和 d 是小寫字母外,其他均為大寫。本地時間的轉換 timezone.localtime timezone.now 其實,還有乙個獲取本地時間的直接方法 timezon...

php計算時間差的函式以及方法

php計算兩個時間差的方法 startdate 2010 12 11 11 40 00 enddate 2012 12 12 11 45 09 計算相差的天數 以天數輸出 date floor strtotime enddate strtotime startdate 86400 計算相差的小時數 ...