经过一个小实验得到结论,localtime函数实现的时候采用的是一块固定buffer,因此如果多次调用此函数,结果值会是最后一次的结果值,如果需要保存每次运行函数的准确结果,需要在localtime函数调用后直接将buffer内容拷贝出来,否则将被后续调用覆盖。
bool IsSameDay(time_t time1, time_t time2)
{
struct tm * ptimeDetail;
struct tm timeDetail1;
struct tm timeDetail2;
{
struct tm * ptimeDetail;
struct tm timeDetail1;
struct tm timeDetail2;
ptimeDetail = localtime ( &time1 );
memcpy(&timeDetail1, ptimeDetail, sizeof(tm));
memcpy(&timeDetail1, ptimeDetail, sizeof(tm));
ptimeDetail = localtime ( &time2 );
memcpy(&timeDetail2, ptimeDetail, sizeof(tm));
memcpy(&timeDetail2, ptimeDetail, sizeof(tm));
if( timeDetail1.tm_year == timeDetail2.tm_year && timeDetail1.tm_mon == timeDetail2.tm_mon
&& timeDetail1.tm_mday == timeDetail2.tm_mday)
{
return true;
}
else
{
return false;
}
}
&& timeDetail1.tm_mday == timeDetail2.tm_mday)
{
return true;
}
else
{
return false;
}
}