0

現在、グレゴリオ暦の日付から月を減算する 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 日となるはずですが、配列例外エラーが発生します。

4

1 に答える 1