添加年,月和日至今C.

时间:2014-07-16 11:42:49

标签: c algorithm date leap-year

我正在尝试编写一个输入日期(" 2000-01-01")以及" y | m | d"的算法,其中y是添加到原始日期的年数,m和d是月和日。该算法也需要考虑闰年。抱歉,我还没有发布任何代码,但我还没有真正有效的工作。

该算法也需要像这样工作:如果你在11月30日增加三个月,你将在明年2月28日,如果是闰年,你将获得29。因此,如果您来自的月份长度高于最终结果月份,则将采用最终结果月份的最后一天。

有人可以给我一些关于如何编写或链接到任何有用资源的指示吗?

我希望这是有道理的,任何问题都让我知道。感谢。

2 个答案:

答案 0 :(得分:1)

你似乎很清楚这个问题。以下是查找闰年的算法:

if year is not divisible by 4 then common year
else if year is not divisible by 100 then leap year
else if year is not divisible by 400 then common year
else leap year

答案 1 :(得分:0)

大多数(如果不是全部)您需要的内容都可以在<ctime>库(http://www.cplusplus.com/reference/ctime/)中找到。

请特别查看time_tstruct tm类型以及如何在两者之间进行转换(localtime()gmttime(),...)。请注意,您可以在struct tm中的字段中添加天,小时,月等,并且可以正确处理它们,例如,“1月32日”变为“2月1日”。

<ctime>库也处理闰年。

你添加3个月的方式似乎不是传统的,所以你可能需要手动检查。使用<ctime>

仍然很容易

编辑:在有人抱怨<ctime>是c ++之前,在普通c中,这个库位于<time.h>