time庫的使用和解析 time h

2021-08-22 07:29:22 字數 1993 閱讀 5811

這裡用arduino的time庫做示例。

首先,幾個容易搞混淆的概念。

時間庫內幾乎所有的資料都在以下兩個資料型別之間相互轉換。

1.時間型別time_t

時間型別time_t雖然只是乙個32位無符號整數,但該型別的資料均代表從2023年1月1日0點0分起開始計時的秒數。(視情況而定。unix時間是從2023年1月1日0點0分開始計數的有符號整數。這方面不同的庫其實implement不同的實現,不需要多在意)

2.時間結構體tm

struct tm ;
可以看到所有項均很好理解,除了tm_year。tm_year代表了從2023年開始計算的年數(即2023年時該項的值為2018-1900 = 118)。

雖然因為時區不同,夏令時不同等原因將導致各地日期時間均不相同,然而utc(標準時間)所有人都一樣。所以一切系統時間以utc為準。再通過函式將系統時間轉換為utc時間結構體或本地時間結構體。

第一次使用time庫需要做一些設定。

時區設定:

void            set_zone(int32_t);
時區設定函式使用引數(one_hour*時區)。one_hour為一小時的秒數,所以直接用3600也可。

比如中國為+8區,則

set_zone(one_hour * 8);
時區設定將影響

struct tm      *localtime(const time_t * timer);

所返回的tm結構體和其他將會被轉換為本地時間結構體/解析本地時間結構體返回系統時間的函式。

夏令時設定:

void            set_dst(int (*) (const time_t *, int32_t *));
夏令時可不設定。預設沒有。

系統時間設定:

void            set_system_time(time_t timestamp);
系統時間設定時引數為乙個time_t(uint32_t)數。若寫入當前時間的time_t值則系統時間將更新為當前時間。若該值**不同(unix時間或其他不同格式)則加相應的offset。

時間維護:

void            system_tick(void);
這個函式非常重要。我之前因為沒使用這個函式導致系統時間不走。這個函式需放入系統的乙個1s的中斷函式中,才能讓系統時間開始工作。在windows或其他系統下,這個函式很可能已經被系統維護了,所以並不需要在意。但是自己開發的嵌入式系統/程式裡則要記得自行維護這個函式。

剩下就是使用了。

time_t          time(time_t *timer);    //獲取當前系統時間

time_t          mktime(struct tm * timeptr);   //將乙個tm結構體轉變成time_t。使用此函式時,被

//轉換的源tm結構體被認為是本地時間。使用時只需填

//充基本時間(年月日時分秒)。填充其他項將被忽

//略,且會被改寫為合適的值。

time_t mk_gmtime(const struct tm * timeptr); //與上乙個類似,不同處在於源tm結構體

//被認為時utc時間。且成功轉換後不會改

//寫其他項。

struct tm *gmtime(const time_t * timer); //將time_t轉換為tm結構體。表達為utc時間。

struct tm *localtime(const time_t * timer); //同上。表達為本地時間。

char *asctime(const struct tm * timeptr); //將tm結構體轉換為ascii字串。

time庫的使用

使用方法 import time time.呼叫相關函式 時間獲取 1.time 獲取當前的時間戳。time.time 結果為 1553570437.6273973。該結果是 從1月1號開始到當前為止一共走了多少秒 2.ctime 獲取當前時間並以易讀的方式表示,返回字串。time.ctime 結果...

time庫的使用

本文源自大學生慕課 北京理工大學國家精品課程 python語言程式設計 一課聽課筆記,課程位址 time庫的使用 time庫是python中處理時間的標準庫 計算機時間表達 提供獲取系統時間並格式化輸出功能 提供系統級精確計時功能,用於程式效能分析 使用方法 import time time.tim...

time庫的使用

time庫是python中處理時間的標準庫 計算機時間的表達 提取獲取系統時間並格式化輸入功能 提供系統級精確計時功能,用於程式效能分析 time庫包括三類函式 時間獲取 time ctime gmtime 時間格式化 strftime strptime 程式計時 sleep perf counte...