本地时间(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);