作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个我一直在处理的受让人,但我被困在最后一个功能上。
使用函数 void Increment(int numDays = 1)
此函数应将日期向前移动参数中给定的日历天数。参数的默认值为 1 天。示例:
Date d1(10, 31, 1998); // Oct 31, 1998
Date d2(6, 29, 1950); // June 29, 1950
d1.Increment(); // d1 is now Nov 1, 1998
d2.Increment(5); // d2 is now July 4, 1950
我不知道该怎么做。
void Date::Increment(int numDays = 1)
我卡住了,我知道如何通过++ 运算符告诉函数递增,但是当我必须让函数将一个月的最后一天递增到第一天或结束时,我感到困惑例如,在那个月的最后一天。 10 月 31 日至 11 月 1 日,或 6 月 29 日至 7 月 4 日。我可以选择 7 月 5 日至 7 月 8 日,但不断变化的月份让我感到困惑
最佳答案
您需要存储每个月有多少天的列表(或数组)。如果您将 numDays
添加到当前日期并且它变得比这更大,则您还需要增加月份。
例如,我们有一个表示 2010 年 3 月 29 日的日期对象。我们调用 Increment(4)
并将 4 添加到 day 变量,以 2010 年 3 月 33 日结束。我们现在检查有多少天March 有并发现它是 31(例如 daysInMonth[3] == 31
)。由于 33 大于 31,我们需要从 33 中减去 31 并增加月份,最后得到 2010 年 4 月 2 日。
对于闰年的 2 月(任何可以被 4 整除且不能被 100 整除的年份,除非它也可以被 400 整除)和递增到 12 月底之后,您将需要特殊处理。
关于c++ - 如何在 C++ 中递增 Date 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3756546/
我是一名优秀的程序员,十分优秀!