time t和struct tm之間的轉化

2021-09-24 10:54:37 字數 2076 閱讀 1639

time_t和struct tm之間的轉化

time_t和struct tm結構體

1:ubuntu man文件對time_t的解釋

從utc 2023年1月1日0時0分0秒開始經過的描述。例如time_t tt = 2;可以認為是從utc 2023年1月1日0時0分0秒開始經過了2秒的時間。

2:ubuntu man文件對struct tm的解釋,

儲存著年月日時分秒等具體時間點資訊,需要注意的是,年份是從2023年開始的,例如119指的是2023年,月份是從零開始的,0指的是1月(january)。

3:linux常用時間函式

struct tm *localtime(const time_t *timep);

struct tm localtime_r(const time_t timep, struct tm result);

/**函式將time_t轉換為用年月日時分秒表示的struct tm結構,結果為本地時間。例如給定time_t為83600(從utc 1970-01-01:00:00:00開始的8小時),當本地電腦時區為上海時區(東八區)時,轉換結果為1970-01-01:00:00:00,當本地電腦為**時區(0時區)時,轉換結果為1970-01-01:08:00:00

localtime_r是執行緒安全的

/

char *asctime(const struct tm *tm);

char *asctime_r(const struct tm *tm, char *buf);

/asctime 將時間以換為字串字串格式返回,asctime_r為執行緒安全/

time_t mktime(struct tm *tm);

/函式將struct tm結構的本地時間轉換成time_t,本地電腦時區如果為上海時區(東八區),1970-01-01:00:00:00將轉換成-28800(東八區時間比格林威治時間快了28800秒),電腦時區為**時區,則會轉化為0/

struct tm *gmtime(const time_t *timep);

struct tm *gmtime_r(const time_t *timep, struct tm *result);

/gmtime是把本地日期和時間轉換為格林威治(gmt)時間的函式。如果本地電腦時區為上海時區(東八區),那麼28800將會被轉換成1970-01-01:00:00:00/

time_t timelocal(struct tm *tm);

time_t timegm(struct tm *tm);

/函式將年月日時分秒表示的struct tm格式的時間轉換為time_t格式,timelocal將引數傳入的時間按照本地時間處理,而timegm將引數傳入的時間按照gmt時間處理。於是,timelocal返回的結果跟本地電腦時區有關,上海時區(東八區)的情況下將1970-01-01:08:00:00轉換為0.timegm將1970-01-01:08:00:00轉化為28800/

/*根據文件,這兩個函式不是posix標準,可以使用的替代方案參考

**/

4:相關**及其執行結果

#include 

#include

void

mktime_test()

void

gmtime_test()

void

gmt_tm_to_gmt_time_t()

void

local_tm_to_local_time_t()

void

main()

time t和struct tm型別的相互轉換

使用 gmtime 函式或localtime 函式將time t 型別的時間日期轉換為 struct tm型別 使用time 函式返回的是乙個 long 值,該值對使用者的意義不大,一般不能根據其值確定具體的年 月 日等資料。gmtime 函式可以方便的對 time t 型別資料進行轉換 將其轉換為...

CRT中的時間 time t和tm

時間處理時實際專案中經常碰到的問題,這裡介紹最常用的時間處理函式。首先介紹基本的時間概念。時間一般分為兩種,一種是本地時間 local time 一種是協調世界時間 coordinated universal time utc 也就是傳說中的格林威治時間。本地時間與utc時間之間的差即為時差,比如,...

CRT中的時間 time t和tm

時間處理時實際專案中經常碰到的問題,這裡介紹最常用的時間處理函式。首先介紹基本的時間概念。時間一般分為兩種,一種是本地時間 local time 一種是協調世界時間 coordinated universal time utc 也就是傳說中的格林威治時間。本地時間與utc時間之間的差即為時差,比如,...