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

2021-06-08 18:48:47 字數 2267 閱讀 4096

使用

gmtime

函式或localtime

函式將time_t

型別的時間日期轉換為

struct tm型別:

使用time

函式返回的是乙個

long

值,該值對使用者的意義不大,一般不能根據其值確定具體的年、月、日等資料。

gmtime

函式可以方便的對

time_t

型別資料進行轉換

,將其轉換為

tm結構的資料方便資料閱讀。

gmtime

函式的原型如下:

struct tm *gmtime(time_t *timep);

localtime

函式的原型如下:

struct tm *localtime(time_t *timep);

將引數timep

所指的time_t

型別資訊轉換成實際所使用的時間日期表示方法,將結果返回到結構

tm結構型別的變數。

gmtime

函式用來存放實際日期時間的結構變數是靜態分配的,每次呼叫

gmtime

函式都將重寫該結構變數。如果希望儲存結構變數中的內容,必須將其複製到

tm結構的另乙個變數中。

gmtime

函式與localtime

函式的區別

:

gmtime

函式返回的時間日期未經時區轉換,是

utc時間

(又稱為世界時間,即格林尼治時間)。

localtime

函式返回當前時區的時間,

轉換日期時間表示形式

time_t

型別轉換為

struct tm

型別示例

:

#include

#include

int main()

;/*指標字元陣列*/

time_t t;

struct tm *p;

t=time(null);/*

獲取從2023年1

月1日零時到現在的秒數,儲存到變數t中

*/ p=gmtime(&t); /*變數t

的值轉換為實際日期時間的表示格式*/

printf("%d

年%02d

月%02d

日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);

printf(" %s ", wday[p->tm_wday]);

printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);

return 0; }

注意:p=gmtime(&t);

此行若改為

p=localtime(&t);

則返回當前時區的時間

使用

mktime

函式將struct tm

型別的時間日期轉換為

time_t型別:

表頭檔案

#include

定義函式

time_t mktime(strcut tm * timeptr);

函式說明

mktime()

用來將引數

timeptr

所指的tm

結構資料轉換成從公元

2023年1

月1日0

時0分0

秒算起至今的

utc時間所經過的秒數。

返回值

返回經過的秒數。

日期轉換為秒數示例

:

#include

#include

int main()

printf("1970/01/01 00:00:00~%d/%02d/%02d %02d:%02d:%02d共%d

秒\n",

stm.tm_year+1900,stm.tm_mon,stm.tm_mday,

stm.tm_hour,stm.tm_min,stm.tm_sec,t);

return 0; }

time t和struct tm之間的轉化

time t和struct tm之間的轉化 time t和struct tm結構體 1 ubuntu man文件對time t的解釋 從utc 1970年1月1日0時0分0秒開始經過的描述。例如time t tt 2 可以認為是從utc 1970年1月1日0時0分0秒開始經過了2秒的時間。2 ubu...

CRT中的時間 time t和tm

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

CRT中的時間 time t和tm

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