我正在大学里学习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;
}
答案 0 :(得分:2)
在struct tm
中,package.json
是自1900年以来的年份。因此,要从公历年份转换为正确的tm_year
值,请减去1900。要从tm_year
进行转换到公历年,则增加1900。
这两个操作必须彼此相反-一个加法和一个减法-否则,如果您多次前后转换,最终将导致越来越多地更改该值。
答案 1 :(得分:1)
您没有显示完整的代码,所以我猜测year_
是您班上的成员。
在这种情况下,您必须参考此值的范围。 struct tm
期望年份是自1900年以来的年数。
如果您的班级存储了耶稣基督出生以来的年数,那么您就必须删除1900,才能从成员的期望中获得tm
的期望。
例如,您将2019
存储在year_
成员中,而tm.tm_year
需要119
(因此2019 - 1900
)。
相反,您必须撤消该操作,即添加1900。