C語言中time t資料型別詳細介紹

2021-06-06 00:55:20 字數 1201 閱讀 9135

包含檔案:

#ifndef __time_t

#define __time_t /* 避免重複定義 time_t */

typedef long time_t; /* 時間值time_t 為長整型的別名*/

#endif

既然time_t實際上是長整型,到未來的某一天,從乙個時間點(一般是2023年1月1日0時0分0秒)到那時的秒數(即日曆時間)超出了長整形所能表示的數的範圍怎麼辦?對time_t資料型別的值來說,它所表示的時間不能晚於2023年1月18日19時14分07秒。為了能夠表示更久遠的時間,一些編譯器廠商引入了64位甚至更長的整形數來儲存日曆時間。比如微軟在visual c++中採用了__time64_t資料型別來儲存日曆時間,並通過_time64()函式來獲得日曆時間(而不是通過使用32位字的time()函式),這樣就可以通過該資料型別儲存2023年1月1日0時0分0秒(不包括該時間點)之前的時間。

在time.h標頭檔案中,我們還可以看到一些函式,它們都是以time_t為引數型別或返回值型別的函式:

double difftime(time_t time1, time_t time0);

time_t mktime(struct tm * timeptr);

time_t time(time_t * timer);

char * asctime(const struct tm * timeptr);

char * ctime(const time_t *timer);

此外,time.h還提供了兩種不同的函式將日曆時間(乙個用time_t表示的整數)轉換為我們平時看到的把年月日時分秒分開顯示的時間格式tm:

struct tm * gmtime(const time_t *timer);                                         

struct tm * localtime(const time_t * timer);

通過查閱msdn,我們可以知道microsoft c/c++ 7.0中時間點的值(time_t物件的值)是從2023年12月31日0時0分0秒到該時間點所經過的秒數,而其它各種版本的microsoft c/c++和所有不同版本的visual c++都是計算的從2023年1月1日0時0分0秒到該時間點所經過的秒數。

C語言中time t資料型別詳細介紹

包含檔案 ifndef time t define time t 避免重複定義 time t typedef long time t 時間值time t 為長整型的別名 endif 既然time t實際上是長整型,到未來的某一天,從乙個時間點 一般是1970年1月1日0時0分0秒 到那時的秒數 即日...

C語言中time t資料型別詳細介紹

包含檔案 ifndef time t define time t 避免重複定義 time t typedef long time t 時間值time t 為長整型的別名 endif 既然time t實際上是長整型,到未來的某一天,從乙個時間點 一般是1970年1月1日0時0分0秒 到那時的秒數 即日...

《C語言中time t資料型別》

包含檔案 ifndef time t define time t 避免重複定義 time t typedef long time t 時間值time t 為長整型的別名 endif 既然time t實際上是長整型,到未來的某一天,從乙個時間點 一般是1970年1月1日0時0分0秒 到那時的秒數 即日...