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

2021-10-09 14:22:24 字數 1292 閱讀 7069

包含檔案:

#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秒 到那時的秒數 即日...