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);

你可能感兴趣的:(C++)