C++時間戳time_t和時間結構體tm

    本地時間(LT)是東八區的時間,格林尼治時間(GMT)是0時區的時間,世界協調時(UTC)是修正後的格林尼治時間。

    

    我們可以粗略地認爲世界協調時(UTC)就是格林尼治時間(GMT)。


    本地時間在東八區,世界協調時(UTC)在0時區,所以東八區比世界協調時早8個小時,即假如現在世界協調時(UTC)爲0時,則本地時間爲8時。


    time_t表示世界協調時(UTC),比如現在本地時間爲2017/11/30 22:0:0,則取到的time_t表示2017/11/3014:0:0,距離1970年1月1日0時0分0秒的秒數。


    取到time_t變量的函數爲time  time(*time);可以

    time_t   timep;

    timep=time(NULL);也可以

    time_t  timep;

    time(&timep);


    時間塊結構體tm包括了年、月、日、時、分、秒等變量,定義如下:

    struct  tm{

    int  tm_sec;

    int  tm_min;

    int  tm_hour;

    int  tm_mday;

    int  tm_mon;

    int  tm_year;

    int  tm_wday;

    int  tm_yday;

    int tm_isdst;

    }

    其中tmmday表示month day,該月中第幾天;tmwday,表示,week day,該週中第幾天;tmyday表示year day,該年中第幾天;isdst表示是否爲夏令時,爲正數表示是夏令時,爲0表示不是夏令時,爲負數表示計算機自動判斷是否爲夏令時。


    time_t轉換爲tm的函數爲

    tm* gmtime(const  time_t*  timep);         //將time_t轉換爲協調世界時,比如,當前時間爲2017年12月1日,9時0分0秒,獲取到當前時間的time_t,在把time_t通過gmtime()函數轉化後得到的時間塊結構體裏的時間爲2017年12月1日,1時0分0秒。

    tm* localtime(const  time_t*  timep);         //將time_t轉換爲本地時間,比如,當前時間爲2017年12月1日,9時0分0秒,獲取到當前時間的time_t,在把time_t通過localtime()函數轉化後得到的時間塊結構體裏的時間爲2017年12月1日,9時0分0秒


    tm轉換爲time_t的函數爲

    time_t   mktime(const  tm*  timeptr);      //將tm時間塊,轉換爲時間戳time_t,得到timeptr表示的協調世界時的時間戳。比如tm包含的時間爲2017年12月1日,9時0分0秒,轉化後得到的是2017年12月1日,9時0分0秒距離1970年1月1日0時0分0秒的秒數。


    time_t轉換爲字符串(char *)

    char*  ctime(const time_t *  timep);


    tm轉換爲字符串(char*)

    char * asctime(const tm*  timeptr);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章