C++按月计算的天日期

按月计算当加减的天数很大时循环量就大,如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, '+');

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值