原文:
http://www.eefocus.com/xuefu2009/blog/10-03/187348_f456a.html
包含檔案
:#ifndef __TIME_T#define __TIME_T /* 避免重複定義 time_t */typedef long time_t; /* 時間值time_t 為長整型的別名*/#endif 既然time_t實際上是長整型,到未來的某一天,從一個時間點(一般是1970年1月1日0時0分0秒)到那時的秒數(即日曆時間)超出了長整形所能表示的數的範圍怎麼辦?對time_t資料類型的值來說,它所表示的時間不能晚於2038年1月18日19時14分07秒。為了能夠表示更久遠的時間,一些編譯器廠商引入了64位甚至更長的整形數來儲存日曆時間。比如微軟在Visual C++中採用了__time64_t資料類型來儲存日曆時間,並通過_time64()函數來獲得日曆時間(而不是通過使用32位字的time()函數),這樣就可以通過該資料類型儲存3001年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對象的值)是從1899年12月31日0時0分0秒到該時間點所經過的秒數,而其它各種版本的Microsoft C/C++和所有不同版本的Visual C++都是計算的從1970年1月1日0時0分0秒到該時間點所經過的秒數。 Pythonh測試程式
import math((math.pow(2,31)-1)/3600/24/356) +1970
輸出結果:
2039.8177943911257 大約等於2039年左右,也就是說int能儲存