作者在 2020-02-02 06:25:29 发布以下内容
按月计算当加减的天数很大时循环量就大,如240000/31~=7742,若用年月同时计算则可减少三百多倍循环量,提高效率。
void 按月计算的天日期(int 年, int 月, int 日, int 天, char 运算符 = '-')
{//缘由https://ask.csdn.net/questions/1052316
int 总天数 = 返回日期总天数(年, 月, 日);
if (运算符 == '-')while (日 <= 天)if (!--月)--年, 月 = 13; else 日 += 返回月的天数(年, 月);
//while (日 <= 天 || !月)if (!月)--年, 月 = 13; else 日 += 返回月的天数(年, --月);
if (运算符 == '+')while ((日 += 天) > 返回月的天数(年, 月 % 12) || 月 > 12)
if (月 > 12)++年, 月 = 1; else 日 -= 返回月的天数(年, 月++), 天 = 0;
日 -= 天;
cout << 年 << "年" << (月 < 10 ? "0" : "") << 月 << "月" << (日 < 10 ? "0" : "") << 日 << "日" << endl;
总天数 -= 返回日期总天数(年, 月, 日); cout << (总天数 < 0 ? -总天数 : 总天数) << endl;
}
按月计算的天日期(2020, 1, 24, 24);
按月计算的天日期(2020, 12, 24, 24, '+');
按月计算的天日期(2020, 2, 24, 24);
按月计算的天日期(2020, 2, 24, 24, '+');
按月计算的天日期(2020, 2, 24, 240000);
按月计算的天日期(2020, 2, 24, 240000, '+');