現在、グレゴリオ暦の日付から月を減算する C++ ライブラリを作成しています。月の加算は機能しますが、減算式が機能せず、エラーが発生します。これが私の減算式のコードです:
Gregorian operator - ( Gregorian const& dt, detail::packaged_month const& month ) {
year_t yearsToSubtract = month.nMonths_ / 12;
month_t monthsToSubtract = month.nMonths_ % 12;
year_t y = dt.year() - yearsToSubtract;
month_t m = dt.month() - monthsToSubtract;
int adjustment = ( m - 1 ) / 12 + ( m - 12 ) / 12;
y -= adjustment;
m += month_t( adjustment * 12 );
day_t d = std::min( dt.day(), gregorian_days_in_month( m, is_gregorian_leapyear( y ) ) );
return Gregorian( y, m, d );
}
開始日を 2001,2,1 または 2001 年 2 月 1 日から 4 か月引いた場合、結果は 2000 年 10 月 1 日となるはずですが、配列例外エラーが発生します。