我编写了以下代码以将输入日期提前到以下日历日期。这在使用 g++ 4.1.2 编译的虚拟源文件中测试时效果很好
但是,当从我公司的模拟器中运行以下代码时(此时我无法获得其中的复杂细节),它会在 20021027 处中断;即对于 20021027 以外的日期,它按预期工作,但对于 20021027,它本身返回 20021027。
请告知可能出了什么问题?
int nextday(const int &date, int n=1)
{
struct tm curr_time;
int yyyy = curr_time.tm_year = date/10000-1900;
int mm = curr_time.tm_mon=(date/100)%100-1;
int dd = curr_time.tm_mday=date%100;
curr_time.tm_min=0;
curr_time.tm_sec=0;
curr_time.tm_hour=0;
time_t next = mktime(&curr_time) + 24*60*60*n;
struct tm new_time;
localtime_r(&next,&new_time);
yyyy = 1900 + new_time.tm_year;
mm = 1 + new_time.tm_mon;
dd = new_time.tm_mday;
return (10000*yyyy+100*mm+dd);
}