在一个程序中用了两次localtime函数去把time_t转换为struct tm*结构体时,结果两个结果是一样的。原因是这个函数使用了同一个tm结构,或者全局变量,或者第一次使用时动态分配。如果想要在同一个进程中多次使得这个函数,而且同时用到多个结果,必须手动将内容存起来。
举例如下:
错误写法:
tm* tsStart = localtime(&ta);
tm* tsEnd = localtime(&tb);
正确写法:
tm tsStart;
tm tsEnd;
tm* ptsStart = localtime(&ta);
tsStart = *ptsStart;
tm* ptsEnd = localtime(&tb);
tsEnd = *ptsEnd;