我在大学学习c++
,有一段代码我一无所知。我使用+1900
,但我的教授在注释行中使用-1900
。
Fecha& Fecha::operator +=(int days) {
tm f = {};
f.tm_mday = day_ + days;
f.tm_mon = mon_ - 1;
f.tm_year = year_ - 1900; //there is my dude, why out -1900 and not +1900
//instead like below
mktime(&f);
day_ = f.tm_mday;
mon_ = f.tm_mon + 1;
year_ = f.tm_year + 1900;
return *this;
}
最佳答案
在struct tm
中,tm_year
是自1900年以来的年份。因此,要从公历年份转换为正确的tm_year
值,请减去1900。要从tm_year
转换为公历年份,请添加1900。
这两个操作必须彼此相反-一个加法和一个减法-否则,如果多次前后转换,最终将导致越来越多地更改该值。